unit library windows delphi file

windows - library - ¿Cómo obtener las fechas de creación/última modificación de un archivo en Delphi?



delphi shellexecute unit (7)

Los delfines tienden a preferir el enfoque FindFirst (la estructura SearchRec tiene algunos de ellos), pero sugeriría la función WinForm API GetFileAttributesEx.

Quiero obtener un archivo de estos atributos como valores enteros.



Tratar

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

De SysUtils.


De la biblioteca gratuita 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) : 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. Time ha sido desaprobado desde entonces, el archivo de Ayuda dice Use F.TimeStamp.
Solo para actualizar esto debido a las versiones posteriores de Delphi


System.IOUtils tiene un registro TFile con varias funciones para obtener la antigüedad del archivo, por ejemplo, GetCreationTime, GetLastAccessTime, GetLastWriteTime


Esto debería funcionar, y es código Delphi nativo.

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;