[Delphi 5] Rekusrsive Dateisuche

Hallo !

Wie kann ich eine rekusrive Dateisuche programmieren ? Der Sinn des Ganzen ist einfach, daß ich ab einem bestimmten Verzeichnis alle Unterverzeichnis nach MP§ Files dursuchen lassen will und dise in eine ListBox eintragen will, um eine Playlist zu erstellen.

Ich habe schon einmal vor Jahren versucht, eine rekursive Suche zu schreiben, bin aber kläglich gescheitert. Am besten wäre es, wenn mir jemand entsprechenden Code in Delphi posten könnte…

Danke

Daniel

Hi Daniel,

diese Prozedur sollte Deinem Wunsch entsprechen:

PROCEDURE GetAllFiles (Mask\_: STRING; Items\_: TStrings);

CONST
 FileAttr = faReadOnly+faHidden+faArchive;

VAR
 Search: TSearchRec;
 SFName: STRING;
 SFPath: STRING;

begin
 SFName := ExtractFileName(Mask\_);
 SFPath := ExtractFilePath(Mask\_);

 IF SFPath[Length(SFPath)]'\' THEN SFPath := SFPath+'\';

 // alle Dateien suchen
 IF FindFirst(Mask\_, FileAttr, Search)=0 THEN
 begin
 REPEAT
 begin
 Items\_.Add(SFPath+Search.Name)
 end
 UNTIL FindNext(Search)0
 end;

 // Unterverzeichnisse durchsuchen
 IF FindFirst(SFPath+'\*.\*',faDirectory,Search)=0 THEN
 begin
 REPEAT
 begin
 IF ((Search.Attr AND faDirectory)=faDirectory)
 AND (Search.name[1]'.') THEN
 begin
 // Selbstaufruf von GetAllFiles
 GetAllFiles(SFPath+Search.Name+'\'+SFName,Items\_)
 end
 end
 UNTIL FindNext(Search)0
 end
end;

Wenn Du z. B. alle „EXE“-Dateien in „C:\WINDOWS“ inklusive aller Dateien in allen Unterverzeichnissen in die ListBox „ListBox1“ schreiben willst, erreichst Du dies mit

ListBox1.Clear;
GetAllFiles('C:\WINDOWS\'+'\*.EXE',ListBox1.Items)

Ich hoffe, ich konnte Dir helfen.

Mit freundlichem Gruß
Martin

Danke, Danke, Danke !!! (o.T)
ohne Text