![]() |
GetAllFiles
Hallo,
möchte eine beliebige Anzahl von Endungen in meine rekursive Dateisuche einbauen. Ich suche zur Zeit wie folgt.
Delphi-Quellcode:
Nun möchte ich aber als mask mehrere Endungen angeben können (*.jpg,*.gif,*.tif) usw.
//Rekursives Einlesen
procedure TForm1.GetAllFiles(mask: string); var search: TSearchRec; directory: string; checksum: string; begin directory := ExtractFilePath(mask); // find all files if FindFirst(mask, $23, search) = 0 then begin repeat // add the files to the listbox checksum := IntToStr(GetCheckSum(directory + search.Name)); Form1.Memo_akt.Lines.Add(directory + search.Name + '|' + checksum); Inc(Count); until FindNext(search) <> 0; end; // Subdirectories/ Unterverzeichnisse if FindFirst(directory + '*.*', faDirectory, search) = 0 then begin repeat if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask)); until FindNext(search) <> 0; FindClose(search); end; end; Wie kann ich das angehen? Danke |
Re: GetAllFiles
Ersetze einfach das Komma durch einen Strichpunkt und es stimmt! :wink:
|
Re: GetAllFiles
hallo, leider auch nicht. hatte ich auch schon mal probiert.
|
Re: GetAllFiles
Moin ueei.net,
da gäbe es, so auf Anhieb, zwei Ansätze:
Auch wenn es üblich ist ein ; als Trennzeichen zu verwenden, würde ich das nicht nehmen, denn dies ist ein gültiges Zeichen in einem Dateinamen. Nimm lieber eines der Zeichen, die nicht vorkommen dürfen (*,\,/,",<,>,?,|,:). Optisch sticht besonders | heraus. Für den zweiten Fall könnte man dann so testen:
Delphi-Quellcode:
mask müsste dann so aufgebaut sein:
if pos(AnsiUpperCase(ExtractFileExt(search.Name)+'|'),AnsiUpperCase(mask)) > 0 then ...
Code:
.jgp|.gif|.tif|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz