Hallo,
ich hab ein Problem mit FindFirst bzw. Find Next. Ich hab mir mit der "standard" Suchfunktion (kommt gleich) die Möglichkeit Verzeichnisse zu durchsuchen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.GetFilesInDirectory(ADirectory: string; AMask: String; ARekursiv: Boolean); var SR: TSearchRec; begin if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then ADirectory:=ADirectory+'\';
if (FindFirst(ADirectory+AMask,faAnyFile-faDirectory,SR)=0) then begin repeat templist.Add(ADirectory+SR.Name); combobox2.Items.Add(SR.Name); Anzahl.Text := IntToStr(StrToInt(Anzahl.Text)+1); application.ProcessMessages; until (FindNext(SR)<>0) or Abbruch; FindClose(SR); end;
if ARekursiv then if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') then GetFilesInDirectory(ADirectory+SR.Name,AMask,True); until (FindNext(SR)<>0) or Abbruch; FindClose(SR); end; end; |
Soweit ja nichts neues, zu dieser Prozedur gibt es ja schon einige Themen im Forum. Wollte hier nur der Verständlichkeit halber und damit jeder weiß über was ich rede den gesamten Code posten.
Mein Frage ist jetzt speziell zu der Funktion "FindFirst" bzw. "FindNext".
Kennt jemand eine Möglichkeit die eigentliche FindFirst Funktion abzubrechen.
Hintegrund:
Ich habe einen Button Abbrechen mit dem ich die Boolean-Variable "Abbruch" auf True setze, damit bricht dann die repeat.. until Schleife ab, das aber erst wenn die nächste Datei nach drücken des Abbruch Buttons gefunden wurde. Dies ist ja auch klar, da die eigentliche Suche im FindFirst bzw. FindNext abläuft und er erst wieder in die until Bedinugungen rein läuft wenn er FindFirst bzw. FindNext durchlaufen hat. Jetzt kann es aber passieren, das ich große Verzeichnisse durchsuche und er lange keine passende Datei findet und ich dann ewig warte bis er die Suche beenden. D.h. hier wäre es gut, wenn ich die Funktion FindFirst bzw. FindNext direkt beenden könnte.
Gruß Jack
Es gibt keine dummen Fragen, nur dumme Antworten.