
13.04.2010, 04:31
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
так, в качестве развлекалочки. Вот процка, которая занимается перебором файлов. Тебе надо только правильные калл-бэки написать и ей подсунуть в качестве третьего параметра:
Код:
type
TEFCallBackAttr = record
Name : String;
FullName : String;
Size : Integer;
TimeStamp : TDateTime;
IsFolder : Boolean;
end;
TEFCallBack = procedure(AInfo : TEFCallBackAttr) Of Object;
//...
procedure TForm1.EnumFiles(APath: String; ARecurse : Boolean; ACallBack: TEFCallBack);
function FileTime2DateTime(FileTime: TFileTime): TDateTime;
var
LocalFileTime: TFileTime;
SystemTime: TSystemTime;
begin
FileTimeToLocalFileTime(FileTime, LocalFileTime) ;
FileTimeToSystemTime(LocalFileTime, SystemTime) ;
Result := SystemTimeToDateTime(SystemTime) ;
end;
procedure CallCallBack(AP : String; AF : TSearhcRec; ACB: TEFCallBack);
var
AInfo : TEFCallBackAttr;
begin
If ACB <> Nil Then
Begin
AInfo.Name := F.Name;
AInfo.FullName := APAth + F.Name;
AInfo.IsFolder := (AF.Attr And faDirectory) <> 0;
AInfo.Size := F.Size;
AInfo.TimeStamp:= FileTime2DateTime(F.Time);
ACB(AInfo);
End;
end;
var
F : TSearchRec;
iFound : Integer;
begin
APath := IncludeTrailingPathDelimiter(APath);
iFound := FindFirst(APath + '*.*', faAnyfile, F);
While iFound = 0 Do
Begin
If (F.Attr And faDirectory) <> 0
Then
Begin
CallCallBack(APAth, F, ACallBack);
If (F.Name <> '.') And (F.Name <> '..') And (ARecurse) Then
EnumFiles(APath,ARecurse,ACallBack);
End
Else
Begin
CallCallBack(APAth, F, ACallBack);
End;
iFound := FindNext(F);
end;
FindClose(F);
end;
|