كيفية الحصول على إنشاء/آخر تعديل مواعيد ملف في دلفي?
سؤال
أريد الحصول على ملفات هذه الصفات كما القيم الصحيحة.
المحلول
Delphians تميل إلى مثل FindFirst النهج (على SearchRec هيكل بعض تلك) ، ولكن أود أن أقترح الدالة Win32 API GetFileAttributesEx.
نصائح أخرى
محاولة
function FileAge(const FileName: string; out FileDateTime: TDateTime): Boolean;
من SysUtils.
من 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 }
هذا يجب أن تعمل ، فمن الأصلي دلفي رمز.
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;
function GetFileModDate(filename : string) : TDateTime;
var
F : TSearchRec;
begin
FindFirst(filename,faAnyFile,F);
Result := F.TimeStamp;
//if you really wanted an Int, change the return type and use this line:
//Result := F.Time;
FindClose(F);
end;
F. الوقت منذ ذلك الحين تم إهمال ملف المساعدة يقول استخدام F. الزمني.
فقط لتحديث هذا بسبب الإصدارات الأحدث من دلفي
يمكنك استدعاء GetFileInformationByHandle winapi وظيفة.Aparently JCL وقد GetFileLastWrite وظيفة يمكنك أيضا استخدام
النظام.IOUtils لا TFile سجل مع عدة وظائف للحصول على ملف العمر مثلاGetCreationTime, GetLastAccessTime, GetLastWriteTime
لا تنتمي إلى StackOverflow