Aquí tienes una funcioncilla que te devuelve las fechas de un archivos tal i como se ven en las propiedades (Creación, última modificación y último acceso). Está basada en un Tip que encontré por Internet (Chami.com concretamente) y modificada para que devuelve las tres posibilidades, segun un parámetro que le pasas.
Código Delphi
[-]
function GetFileLastAccessTime(sFileName:string;
Date:Integer
):TDateTime;
var
ffd : TWin32FindData;
dft : DWord;
lft : TFileTime;
h : THandle;
begin
h := Windows.FindFirstFile(PChar(sFileName), ffd);
if(INVALID_HANDLE_VALUE <> h)then begin
Windows.FindClose( h );
if (Date = 0) then begin
FileTimeToLocalFileTime(ffd.ftCreationTime, lft);
end
else if (Date = 1) then begin
FileTimeToLocalFileTime(ffd.ftLastWriteTime, lft);
end
else if (Date = 2) then begin
FileTimeToLocalFileTime(ffd.ftLastAccessTime, lft);
end
else begin
Exit;
end;
FileTimeToDosDateTime(lft, LongRec(dft).Hi, LongRec(dft).Lo);
Result := FileDateToDateTime(dft);
end;
end;
Para utilizarla basta un código como éste:
Código Delphi
[-]
Str := 'c:\Temp\MSG_File.log';
Str := DateTimeToStr(GetFileLastAccessTime(Str, 0));
Memo1.Lines.Add('Creacion: ' + Str);
Memo1.Lines.Add('------------------------');
Str := 'c:\Temp\MSG_File.log';
Str := DateTimeToStr(GetFileLastAccessTime(Str, 1));
Memo1.Lines.Add('Última escritura: ' + Str);
Memo1.Lines.Add('------------------------');
Str := 'c:\Temp\MSG_File.log';
Str := DateTimeToStr(GetFileLastAccessTime(Str, 2));
Memo1.Lines.Add('Último Acceso: ' + Str);
Memo1.Lines.Add('------------------------');
Delphi posee en la Unit
SysUtils la función
FileAge, que utiliza ftLastWriteTime (que supongo que es el más utilizado), de forma que es una variante más concreta de ésta.