Hallo! Zum Suchen von Dateien verwende ich bis jetzt folgende Funktion aus der CodeLib:
Delphi-Quellcode:
procedure FindAllFiles(MediaList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
procedure LFindAllFiles(AParentFolder: String);
var LSearchRec: TSearchRec;
begin
if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
begin
repeat
Application.ProcessMessages;
if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
begin
if LSearchRec.Attr and faDirectory = faDirectory then
begin
if AddFolderNames and
(IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
MediaList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
Application.ProcessMessages;
if Recurse then
LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
end
else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
MediaList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
end;
until FindNext(LSearchRec) <> 0;
FindClose(LSearchRec);
end;
end;
begin
Mask := AnsiLowerCase(Mask);
LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
end;
Wie kann ich diese Funktion erweiter, dass Sie
1: Mehrere Masken in einem Suchlauf anwendet (z.B. statt Mask:='*.mp3'; auch Mask:='*.mp3;*.wav'; möglich ist) und
2: Man bestimmte Verzeichnisse (z.B. C:\WINDOWS\) von der Suche ausschließen kann?
--
Danke für die Hilfe.