Aus diesem Grung benutze ich auch kein Path und FindMask, sondern gebe das als ein String an (z.B. 'c:\temp\*.jpg').
Hier die veränderte Prozedur von mir. Da ich mich selbst um die Trennung kümmere, kann nicht passieren, daß am Pfad ein "\" fehlt.
Weiterhin würde ich faAnyFile nicht für die Suche benutzen, da du da viel unnütigen Müll mitbekommst.
Hier eine Prozedur die ich benutze. Sie ist außerden unabhängig von der ListBox. Das Ergebnis der Suche steht in einem String und kann später als Text an ein StringList Objekt übergeben werden.
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:
| procedure GetAllFilesF(PathAndMask: String; var Text: String); var Search: TSearchRec; Verz: String; Attrib: Integer; begin Verz := ExtractFilePath(PathAndMask); Attrib := faArchive + faReadOnly + faHidden;
if FindFirst(PathAndMask, Attrib, Search) = 0 then { suche Dateien } repeat Text := Text + Verz + Search.Name + ^j until FindNext(Search) <> 0;
if FindFirst(Verz + '*.*', faDirectory, Search) = 0 then begin { durchsuche Unterordner } repeat if ((Search.Attr and faDirectory) = faDirectory) and (Search.Name[1] <> '.') then GetAllFilesF(Verz + Search.Name + '\' + ExtractFileName(PathAndMask), Text); until FindNext(Search) <> 0; FindClose(Search); end; end;
procedure TForm1.Button1Click(Sender: TObject); // Beispielaufruf var Test: String; begin GetAllFilesF('c:\temp\*.jpg', Test); ListBox1.Items.Text := Test; ShowMessage(IntToStr(ListBox1.Items.Count) + ' Daten gefunden'); end; |