Announcement

Collapse
No announcement yet.

findfirst und findnext

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • findfirst und findnext

    Hallo!

    Wie kann ich ein Directory-Listing mit Unterverzeichnissen machen? Mit findfirst und findnext geht das irgendwie nicht so richtig. Es werden immer nur die Dateien gelistet die in dem Verzeichnis sind.

    Gruß:

    Tobias

  • #2
    <html>

    <head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=iso-8859-1">
    <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
    <title>Normale Seite ohne Titel</title>
    </head>

    <body bgcolor="#FFFFFF">

    <p>Hallo Tobias, vermutlich sieht Deine Zeile so aus: findfirst(&quot;C:\\*.*&quot;,&amp;ffblk,0);
    Nimm statt der 0 eine 16 oder FA_DIREC, dann werden auch
    Verzeichnisse gefunden. Im Builder gibt es auch noch FindFirst,
    FindNext und FindClose, mit Beispielen in der Hilfedatei. Darüber
    hinaus gibt es noch die Funktionen FindFirstFile, FindNextFile
    und FindClose aus der WIN32 API:</p>

    <pre>
    void __fastcall TMainForm::Test1Click(TObject *Sender)
    {
    WIN32_FIND_DATA fd;
    HANDLE h=FindFirstFile(&quot;c:\\*.*&quot;,&amp;fd);
    if(h!=INVALID_HANDLE_VALUE)
    {
    do
    {
    if(fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
    MessageBox(Handle,fd.cFileName,&quot;Verzeichnis&q uot;,MB_OK);
    else
    MessageBox(Handle,fd.cFileName,&quot;Datei&quot;,M B_OK);
    }
    while(FindNextFile(h,&amp;fd));
    FindClose(h);
    }
    }</pre>

    <p>Viel Spaß damit - Günther</p>

    <p>&nbsp;</p>
    </body>
    </html&gt
    Günther

    Comment


    • #3
      Hallo,

      dieses Problem ist wahrscheinlich schon oft gelöst worden: Ich möchte in einem StringGrid Gleitkommazahlen eingeben und hierbei eine Gültigkeitsprüfung durchführen. Hierzu habe
      ich für das Ereignis OnGetEditText folgenden Codeabschnitt geschrieben, der eine Falscheingabe durch eine Exception abfängt.

      void __fastcall TTargetValues::TextGridSetEditText(TObject *Sender<br>
      int ACol, int ARow, const AnsiString Value)<br>
      {<br>
      double test;<br>
      try<br>
      {<br>
      if (Value != "") test = Value.ToDouble();<br>
      if (ACol == 1)<br>
      TextGrid->Cells[ACol][ARow] = Format("%*.*f",ARRAYOFCONST<br>((5,2,test)));<br>
      if (ACol == 2)<br>
      TextGrid->Cells[ACol][ARow] = Format("%*.*f",ARRAYOFCONST<br>((5,3,test)));<br>
      }<br>
      catch (Exception &exception)<br>
      {<br>
      Application->ShowException(&exception);<br>
      Repaint();<br>
      }<br>
      }<br>

      Leider ist das Ergebnis unbefriedigend, weil es z.B. nicht möglich ist mit dem Inplace - Editor den kompletten Feldinhalt zu löschen und durch eine neue Zahl zu ersetzen.<br>
      Kennt jemand eine bessere Lösung oder gibt es hierzu eine fertige Komponente ?

      Hans-Georg Lot

      Comment

      Working...
      X