Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Fecha de Archivo (https://www.clubdelphi.com/foros/showthread.php?t=19342)

vtdeleon 11-03-2005 03:47:49

Fecha de Archivo
 
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.

Código Delphi [-]
 //------------------------------------------------------------------------------
 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:

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.


La franja horaria es GMT +2. Ahora son las 10:09:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi