Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Findfirst...Findnext funktioniert nicht 100%ig

  Alt 8. Mär 2007, 09:15
Delphi-Quellcode:
  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then //<-- geht durch den Verzeichnisbaum
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            // der Verzeichnisname steht in SR.Name
            // der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            // RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
          // --> eine Datei wurde gefunden
          // der Dateiname steht in SR.Name
          // der vollständige Dateiname (inkl. Pfadangabe) ist
          // RootFolder + SR.Name
        FileList.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
Da es sich um rekursion handelt , wird erst zum tiefsten Punkt der Verzeichnisstruktur gewechselt (FindFirst und FindNext mit Maske *.*) dort wird dann FindFirst und FindNext mit der Suchmaske ausgeführt.

Dies ist bei Dir nicht der Fall, bei Dir wird zuerst nach einem File mit der Suchmaske *.ini gesucht.
Ist das erfolglos wird nicht nach Unterverzeichnissen gesucht.
Du müsstes Dein Funktion etwas umbauen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat