Die Procedure:
Delphi-Quellcode:
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string);
var Mask : string;
var SR : TSearchRec;
begin
Mask := '*.*';
if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then
begin
try
repeat
List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindData.nFileSizeHigh)+'*'
+IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTime));
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
if FindFirst(Directory+Mask,faAnyFile,SR) = 0 then
begin
try
repeat
if ((SR.Attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then
begin
ScanDir(Directory+SR.Name+'\');
end;
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
end;
begin
List.BeginUpdate;
try
if ClearList then
begin
List.Clear;
end;
Directory := trim(Directory);
if Directory = '' then
begin
Exit;
end;
Directory := IncludeTrailingPathDelimiter(Directory);
ScanDir(Directory);
finally
List.EndUpdate;
end;
end;
und der Aufruf:
Delphi-Quellcode:
var List : TStringList;
List := TStringList.Create;
// Pfad kommt aus einer Datenbank Inhalt: 'C:\Dokumente und Einstellungen\Beispiel'
TDataWork.GetAllFilesInDirectorys(Pfad,List,true);
Hoffe das hilft euch weiter, wie gesagt ich habe das Gefüht das er die Liste garnicht füllt in der Procedure, zumindest wird das durch debugen nicht deutlich. Wenn ich die Procedure allerdings aufrufe und eine ListBox übergebe funktioniert das ganze einwandfrei...