Das Thema ist zwar schon einige Jahre alt... aber ich nutze die Rekursive Suche mit GetFilesInDirectory immer noch gerne:
Code:
procedure GetFilesInDirectory(Directory: string; const Mask: string; List: TStrings; WithSubDirs, ClearList: Boolean);
procedure ScanDir(const Directory: string);
var
SR: TSearchRec;
begin
if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then try
repeat
List.Add(Directory + SR.Name)
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
if WithSubDirs then begin
if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
repeat
if ((SR.attr and faDirectory) = faDirectory) and
(SR.Name <> '.') and (SR.Name <> '..') then
ScanDir(Directory + SR.Name + '\');
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
end;
begin
List.BeginUpdate;
try
if ClearList then List.Clear;
if Directory = '\' then Exit;
if Directory[Length(Directory)] <> '\' then
Directory := Directory + '\';
ScanDir(Directory);
finally
List.EndUpdate;
end;
end;
Nun ist aber mein ungelöstes Problem, das ich bei der Suche in C:\ProgramData folgendes als Ergebnis bekomme, wenn ich nach "lights*" suche: Siehe angehängten Screenshot.
?!? Er dürfte mir die Dateien "Light Skin..." doch gar nicht anzeigen? Was mag der Grund sein?
Gruß,
Migo