Announcement

Collapse
No announcement yet.

FindFirstFile

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

  • FindFirstFile

    Hallo,
    wie kann ich mit FindFirstFile über mehrere Verzeichnisse suchen ?
    Gibt es eine andere Möglichkeit.

    vielen Dank
    Markus Tischler

  • #2
    Auch wenn meine Antwort sehr spät kommt, vielleicht hilft der folgende Quellcode auch anderen, die sich hier im Forum herumtollen.

    Gruß
    MRS

    <PRE>
    procedure TfrmMain.GetFiles(strMask: String);
    var
    strSearch: String;
    strDirectory: String;
    strFile: String;
    hHandle: THandle;
    lpFindFileData: TWIN32FindData;
    begin
    strDirectory := ExtractFilePath(strMask);
    strSearch := ExtractFileName(strMask);
    {*** Zunächst nach Dateien im aktuellen Verzeichnis suchen ***}
    hHandle := FindFirstFile(PChar(strMask), lpFindFileData);
    if hHandle <> INVALID_HANDLE_VALUE then begin
    repeat
    strFile := lpFindFileData.cFileName;
    //--> Hier z.B. eine Gefundenen-Liste ergänzen
    until not FindNextFile(hHandle, lpFindFileData);
    end;
    {*** Dann nach Unterverzeichnissen suchen (rekursives Suchen) ***}
    hHandle := FindFirstFile(PChar(strDirectory + '*.*'), lpFindFileData);
    if hHandle <> INVALID_HANDLE_VALUE then begin
    repeat
    strFile := lpFindFileData.cFileName;
    {*** Prüfen, ob ein Verzeichnis vorliegt ***}
    if ((lpFindFileData.dwFileAttributes and faDirectory) = faDirectory) and (strFile[1] <> '.') then begin
    GetFiles(strDirectory + strFile + '\' + strSearch);
    end;
    until not FindNextFile(hHandle, lpFindFileData);
    end;
    {*** Suche abschließen ***}
    Windows.FindClose(hHandle);
    end; {procedure GetFiles}
    </PRE&gt

    Comment


    • #3
      <pre>

      if ((lpFindFileData.dwFileAttributes and faDirectory) = faDirectory) and (strFile[1] <> '.') then begin
      GetFiles(strDirectory + strFile + '\' + strSearch);

      </pre>

      Die Abfrage von "strFile[1] <> '.'" ist eine falsche Abfrage. Versuch mal in Windows\Profiles\.JAVA\ zu suchen !! Hier im Forum kann man eine lange Diskussion mit Beweis dazu finden.

      Gruß Hage

      Comment


      • #4
        Hallo Hagen,

        schön, daß Du Dir den Quellcode so genau angesehen hast.

        Die Abfrage mit strFile[1] <> '.' steht in vielen Büchern so oder so ähnlich, wenn es um rekursives Suchen in Unterverzeichnissen geht.

        Ich arbeite mit Windows 2000 und dort gibt es von Microsoft aus keine regulären Unterverzeichnisse, die mit einem Punkt beginnen. Sie lassen sich auch nicht so anlegen. Bei welchem Windows-Betriebssystem gibt es das Verzeichnis "\Windows\Profiles\.JAVA\"?

        Viele Grüße
        MR

        Comment


        • #5
          Jo ich weiß, und das ist es auch was mich "trauig" macht. Diese Bücher erheben den Anspruch einem Menschen das programmieren beizubringen und zeigen dann solchen "Mist" auf. Das problem was ich persönlich damit habe ist NICHT das man es so oder so coden könnte, sondern das es eine klare Aufgabenstellung gibt und all diese Sources eben NICHT die korrekte Lösung präsentieren. D.h. ein gutes Lehrbuch sollte als erstesmal dem leser verklickern das Programmieren eine EXAKTE wissenschaft ist und keine PI mal Daumen Angelegenheit.<br>

          Für mehr sieh mal unter

          http://www.entwickler-forum.de\webx?13@@.ee87729/13

          Gruß hagen

          PS: den .JAVA Ordner gibts auf meinem Rechner und wurde vom SUN JAVA o.ä. angelegt.

          Comment


          • #6
            Hallo Hagen,

            vielen Dank für Deine Hilfestellung. Habe meine Routinensammlung sofort angepasst. Mich ärgert bei dieser Sache natürlich auch, daß ich den teilweise falschen Code aus der einschlägigen Literatur in gutem Glauben auch noch anderen vorgeschlagen habe.

            Ich werde sicherlich zukünftig Quellcodes aus Büchern oder Zeitschriften nicht mehr so ohne Weiteres ungeprüft übernehmen, sondern (soweit es mein Programmierwissen erlaubt) kritisch hinterfragen.

            Viele Grüße :-)

            MR

            Comment


            • #7
              das ist immer eine gute Idee, und meine es ist "normaler Menschenverstand" sich zu hinterfragen "ist das überhaupt Wahr was mann mir weißmachen will ?"

              Comment

              Working...
              X