كيفية الحصول على إنشاء/آخر تعديل مواعيد ملف في دلفي?

StackOverflow https://stackoverflow.com/questions/144453

  •  02-07-2019
  •  | 
  •  

سؤال

أريد الحصول على ملفات هذه الصفات كما القيم الصحيحة.

هل كانت مفيدة؟

المحلول

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top