(Co-Admin)
Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
Turbo Delphi für Win32
|
Verzeichnisse nach Dateien durchsuchen
3. Feb 2005, 11:55
Luckie hat hier eine Funktion geschrieben, die Ordner und Unterordner nach Dateien durchsucht und dabei die API Funktion FindFirstFile verwendet.
Eine VCL-Version gibt es hier.
Delphi-Quellcode:
type
TStringDynArray = array of string;
var
FileCount: Cardinal = 0;
Files : TStringDynArray = nil;
function FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean
= True): TStringDynArray;
var
wfd : TWin32FindData;
hFile : THandle;
begin
if AnsiLastChar(RootFolder)^ <> '\' then
RootFolder := RootFolder + '\';
if Recurse then
begin
hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);
if hFile <> INVALID_HANDLE_VALUE then
try
repeat
if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY =
FILE_ATTRIBUTE_DIRECTORY then
if (string(wfd.cFileName) <> '.') and (string(wfd.cFileName) <> '..')
then
FindAllFiles(RootFolder + wfd.cFileName, Mask, Recurse);
until FindNextFile(hFile, wfd) = False;
finally
windows.FindClose(hFile);
end;
end;
hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);
if hFile <> INVALID_HANDLE_VALUE then
try
repeat
if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <>
FILE_ATTRIBUTE_DIRECTORY then
begin
FileCount := length(Files)+1;
Setlength(Files, FileCount);
Files[FileCount - 1] := RootFolder + String(wfd.cFileName);
end;
until FindNextFile(hFile, wfd) = False;
finally
Windows.FindClose(hFile);
end;
end;
Beispielaufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
Files := nil;
FindAllFiles('d:\Dokumente', '*.*', True);
for i := 0 to length(Files) - 1 do
begin
Listbox1.Items.Add(Files[i]);
end;
end;
Suchworte: finden auflisten
|
|
Zitat
|