
06.10.2012, 13:39
|
 |
Профессионал
|
|
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
|
|
Цитата:
Сообщение от SCrat.ORS
функции для получения дат создания файла, и дат изменения файла
Код:
Function GetDateCreate(SR:TSearchRec):String;
Var
DT: TFileTime;
ST: TSystemTime;
DD,MM,YY,H,M,S:string;
Begin
Result:='';
FileTimeToLocalFileTime( SR.FindData.ftCreationTime, DT );
FileTimeToSystemTime( DT, ST );
If st.wDay<10 then DD:='0'+inttostr(st.wDay) else DD:=inttostr(st.wDay);
If st.wMonth<10 then MM:='0'+inttostr(st.wMonth) else MM:=inttostr(st.wMonth);
YY:=inttostr(st.wYear);
H:=inttostr(st.wHour);
If st.wMinute<10 then M:='0'+inttostr(st.wMinute) else M:=inttostr(st.wMinute);
If st.wSecond<10 then S:='0'+inttostr(st.wSecond) else S:=inttostr(st.wSecond);
Result := DD+'.'+MM+'.'+YY+' '+H+':'+M+':'+S;
end;
|
Почему так сложно то? Это же можно сделать проще:
Код:
function GetDateCreate(SR: TSearchRec): String;
var
FT: TFileTime;
ST: TSystemTime;
DT: TDateTime;
begin
FileTimeToLocalFileTime(SR.FindData.ftCreationTime, FT);
FileTimeToSystemTime(FT, ST);
DT := SystemTimeToDateTime(ST);
Result := DateTimeToStr(DT);
// Или так:
Result := FormatDateTime('dd.mm.yyyy hh:nn:ss,zzz', DT);
end;
Цитата:
Сообщение от SCrat.ORS
использовать в цикле поиска фалов
Код:
Var
SR:TSearchRec;
FindRes,exten,Name,Dir{путь где ищем все что есть}:string;
k:Integer;
begin
FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
While FindRes=0 do
begin Name:=Dir;
if ((SR.Attr and faDirectory)=faDirectory) and
((SR.Name='.')or(SR.Name='..')) then
begin
FindRes:=FindNext(SR);
Continue;
end;
if ((SR.Attr and faDirectory)=faDirectory) then /// если найден каталог, то
begin
FindFile(Dir+SR.Name+'\'); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли
FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
Continue; // продолжить цикл
end;
Name:=Name+SR.Name;
k:=length(SR.Name); exten:=copy(SR.Name,k-2,3);
//if exten='txt' then
try
end;
... и т.д
|
И здесь тоже всё сложно и запутанно. Вот так попроще будет:
Код:
procedure FindFile(Path: String);
var
SR: TSearchRec;
ext: String;
begin
// Path := IncludeTrailingPathDelimiter(Path);
if FindFirst(Path + '*.*', faAnyFile, SR) = NO_ERROR then
try
repeat
if (SR.Attr and faDirectory) = faDirectory then // Это каталог
begin
if (SR.Name <> '.') and (SR.Name <> '..') then // Если это не системные каталоги
FindFile(Path + sr.Name + '\'); // то обрабатываем рекурсивно и подкаталоги
end else // Это файл
begin
ext := AnsiLowerCase(ExtractFileExt(SR.Name));
if ext = '.txt' then
begin
// ...
end;
end;
until FindNext(SR) <> NO_ERROR;
finally
FindClose(sr); // И не забывать освобождать ресурсы - они не безграничные
end;
end;
|