FPC中的FileDateToDateTime()函数,在转换毫秒时不够精确。如果你使用jcl中的FileTimeToDateTime(),可以获得毫秒数。
uses Windows;
const
FileTimeBase = -109205.0;
FileTimeStep: Extended = 24.0 * 60.0 * 60.0 * 1000.0 * 1000.0 * 10.0; // 100 nSek per Day
function FileTimeToDateTime(const FileTime: TFileTime): TDateTime;
begin
Result := Int64(FileTime) / FileTimeStep;
Result := Result + FileTimeBase;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
F: TSearchRec;
Local: TFileTime;
begin
memo1.clear;
FindFirst('project1.exe', faAnyFile and not faDirectory, F);
try
FileTimeToLocalFileTime(F.FindData.ftCreationTime, Local);
memo1.lines.add('Created: ' + FormatDateTime('dd.mm.yyyy hh:nn:ss.zzz', FileTimeToDateTime(Local)));
FileTimeToLocalFileTime(F.FindData.ftLastAccessTime, Local);
memo1.lines.add('Last access: ' + FormatDateTime('dd.mm.yyyy hh:nn:ss.zzz', FileTimeToDateTime(Local)));
FileTimeToLocalFileTime(F.FindData.ftLastWriteT

1062

被折叠的 条评论
为什么被折叠?



