Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
Delphi 12 Athens
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
16. Apr 2010, 14:39
Auch wenn das dann zum x-ten Mal hier steht, mein kompletter implementation-Abschnitt:
Delphi-Quellcode:
implementation
{$R *.dfm}
type
TDataWork = class
public
class procedure GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);static;
end;
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string);
var Mask : string;
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;
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringlist;
begin
List := TStringlist.Create;
try
TDataWork.GetAllFilesInDirectorys('C:\Test',List,true);
Memo1.Lines.Assign(List);
finally
List.Free;
end;
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|