vtdeleon
11-03-2005, 03:47:49
Saludos
Como puedo saber la fecha y/o hora de creacion o modificacion de un archivo cualquiera ?
Neftali [Germán.Estévez]
11-03-2005, 09:20:54
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.
//------------------------------------------------------------------------------
function GetFileLastAccessTime(sFileName:string;
Date:Integer
{0=creation;
1=Ultima escritura
2=Ultimo Acceso} ):TDateTime;
var
ffd : TWin32FindData;
dft : DWord;
lft : TFileTime;
h : THandle;
begin
// Buscamos la información (fichero)
h := Windows.FindFirstFile(PChar(sFileName), ffd);
// Encontrado?
if(INVALID_HANDLE_VALUE <> h)then begin
// Sólo buscamos uno, por lo tantocerramos la búsqueda
Windows.FindClose( h );
// segun el tipo de fecha
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
// Tipo Incorrecto
Exit;
end;
// Lo convierte a DOS-Time
FileTimeToDosDateTime(lft, LongRec(dft).Hi, LongRec(dft).Lo);
// finalmente lo vuelve a convertir al tipo Delphi (TDateTime)
Result := FileDateToDateTime(dft);
end;
end;
//------------------------------------------------------------------------------
Para utilizarla basta un código como éste:
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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.