Man benötigt eigentlich immer zumindest ein zu durchsuchendes Verzeichnis.
Deshalb würde ich dieses in der Liste der zu durchsuchenden Verzeichnisse übergeben.
Die Verzeichnisse, die von der Suche ausgeschlossen sind, sollten aber dann höhere Priorität haben.
Bsp. Wenn "c:\" dursucht werden soll und "c:\temp" ausgeschlossen ist.
Ungetestet:
Delphi-Quellcode:
procedure FindFiles(ADirList: TStrings; const AFileMask: string; AExcludeDirList: TStrings; AFileList: TStrings);
var
SubDirList: TStringList;
FindInfo: TSearchRec;
sDir: string;
begin
SubDirList := TStringList.Create;
try
for sDir in ADirList do
begin
if AExcludeDirList.IndexOf(sDir) < 0 then
begin
if FindFirst(sDir + AFileMask, faAnyFile, FindInfo); then
begin
try
repeat
if (FindInfo.Attr and faDirectory) = faDirectory then
begin
if (FindInfo.Name <> '.') and (FindInfo.Name <> '..') then
SubDirList.Add(sDir + FindInfo.Name + '\');
end
else
AFileList.Add(sDir + FindInfo.Name);
until not FindNext(FindInfo);
finally
FindClose(FindInfo);
end;
end;
if SubDirList.Count > 0 then
begin
FindFiles(SubDirList, AFileMask, AExcludeDirList, AFileList);
SubDirList.Clear;
end;
end;
end;
finally
SubDirList.Free;
end;
end;