Как добраться, создают/длятся измененные даты файла в Delphi?

10
задан 27 September 2008 в 20:57
поделиться

5 ответов

Delphians склонны любить подход FindFirst (структура SearchRec имеет некоторых из тех), но я предложил бы API-функцию Win32 GetFileAttributesEx.

12
ответ дан 3 December 2019 в 14:00
поделиться

Из бесплатно распространяемой библиотеки DSiWin32:

function DSiFileTimeToDateTime(fileTime: TFileTime; var dateTime: TDateTime): boolean;
var
  sysTime: TSystemTime;
begin
  Result := FileTimeToSystemTime(fileTime, sysTime);
  if Result then
    dateTime := SystemTimeToDateTime(sysTime);
end; { DSiFileTimeToDateTime }

function  DSiGetFileTimes(const fileName: string; var creationTime, lastAccessTime,
  lastModificationTime: TDateTime): boolean; 
var
  fileHandle            : cardinal;
  fsCreationTime        : TFileTime;
  fsLastAccessTime      : TFileTime;
  fsLastModificationTime: TFileTime;
begin
  Result := false;
  fileHandle := CreateFile(PChar(fileName), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, 0, 0);
  if fileHandle <> INVALID_HANDLE_VALUE then try
    Result :=
      GetFileTime(fileHandle, @fsCreationTime, @fsLastAccessTime,
         @fsLastModificationTime) and
      DSiFileTimeToDateTime(fsCreationTime, creationTime) and
      DSiFileTimeToDateTime(fsLastAccessTime, lastAccessTime) and
      DSiFileTimeToDateTime(fsLastModificationTime, lastModificationTime);
  finally
    CloseHandle(fileHandle);
  end;
end; { DSiGetFileTimes }
6
ответ дан 3 December 2019 в 14:00
поделиться

Это должно работать, и это - собственный код Delphi.

function GetFileModDate(filename : string) : integer;
var
  F : TSearchRec;
begin
  FindFirst(filename,faAnyFile,F);
  Result := F.Time;
  //if you wanted a TDateTime, change the return type and use this line:
  //Result := FileDateToDatetime(F.Time);
  FindClose(F);
end;
4
ответ дан 3 December 2019 в 14:00
поделиться

Вы могли вызвать функцию GetFileInformationByHandle winapi. Aparently JCL сделал, чтобы GetFileLastWrite функционировал, Вы могли также использовать

0
ответ дан 3 December 2019 в 14:00
поделиться

Попробовать

function FileAge(const FileName: string; out FileDateTime: TDateTime): Boolean;

От SysUtils.

13
ответ дан 3 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: