|
Convirtiendo fechas en formato TFileTime a TDateTime
Copyright © 2000 Ernesto
De Spirito
El campo FindData de TSearchRec, el registro usado
por FindFirst y FindNext para obtener las entradas de
un directorio, es otro registro que entre otra información (como por ejemplo el
nombre corto y el nombre largo del archivo) tiene tres campos que representan
las horas de creación, último acceso y última escritura (ftCreationTime,
ftLastAccessTime, ftLastWriteTime respectivamente).
Estos tres campos están declarados como TFileTime, un tipo que
representa fechas de 64 bits en Tiempo Universal Coordinado (UTC).
Si desea convertir esos valores a TDateTime, puede usar la
siguiente función:
uses Windows;
function FileTime2DateTime(FileTime: TFileTime): TDateTime;
var
LocalFileTime: TFileTime;
SystemTime: TSystemTime;
begin
FileTimeToLocalFileTime(FileTime, LocalFileTime);
FileTimeToSystemTime(LocalFileTime, SystemTime);
Result := SystemTimeToDateTime(SystemTime);
end;
Llamada de ejemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
sr: TSearchRec;
begin
if FindFirst(Application.ExeName, faAnyFile, sr) = 0 then
begin
ShowMessage(DateTimeToStr(
FileTime2DateTime(sr.FindData.ftLastWriteTime)));
FindClose(sr);
end;
end;
Puede encontrar el código fuente completo de este artículo en el archivo que acompaña al Boletín Pascal #21.
|