使用Delphi获取LastAccessTime

gca*_*ill 0 delphi

我目前正在使用以下指南来获取Delphi的文件"LastAccessTime" http://www.latiumsoftware.com/en/delphi/00007.php

使用FindNext,可以访问TSearchRec对象,我可以从该对象访问类型为TFileTime的ftLastWriteTime

当将其转换为TDateTime对象(使用上面的源)然后输出DateTimeToString时,我得到日期和时间,但小时似乎是文件ftLastWriteTime小时值中两位数的总和.

即取代2009/09/03 13:45我得2009/09/03 04:45或者代替2009/09/03 17:45我得2009/09/03 08:45

欢迎提出任何意见,非常感谢

gab*_*abr 5

"像往常一样" ;-)我会指向DSiWin32其中包括功能DSiGetFileTimes返回创建时间,最后访问时间和最后修改时间.

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 }
Run Code Online (Sandbox Code Playgroud)