PDA

Ver la Versión Completa : Fecha de Directorio en Windows XP


vicvil
05-12-2003, 01:56:43
Tengo un problema al leer la fecha de un directorio en Windows XP. Cuando corro el sistema en Windows 98 no hay problemas ya que este conserva siempre la misma fecha pero en Windows XP la fecha del directorio cambia cada vez que se agregan o eliminan archivos, pero me he dado cuenta que este maneja dos fechas, la de modificacion y la de creación. Mi pregunta es ¿como puedo obtener la fecha de creación en Windows XP? si es que se puede, y si existe la forma ¿servirá para Windows 98?
Gracias.

negama
09-01-2006, 23:51:15
En realidad XP maneja tres fechas: de creacion, modificacion y ultimo acceso, este ejemplo es para acceder a tales fechas de un archivo espero que te sirva para adaptarlo al directorio, el meollo del asunto está en el GetFileTime ..

function obtenerFechasFichero (const FileName: string; var Created: TDateTime;
var Accessed: TDateTime; var Modified: TDateTime): Boolean;
var
h: THandle;
Info1, Info2, Info3: TFileTime;
SysTimeStruct: SYSTEMTIME;
TimeZoneInfo: TTimeZoneInformation;
Bias: Double;
begin
Result := False;
Bias := 0;
h := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
if h > 0 then
begin
try
if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then
Bias := TimeZoneInfo.Bias / 1440; // 60x24
GetFileTime(h, @Info1, @Info2, @Info3);
if FileTimeToSystemTime(Info1, SysTimeStruct) then
Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
if FileTimeToSystemTime(Info2, SysTimeStruct) then
Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;
if FileTimeToSystemTime(Info3, SysTimeStruct) then
Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;
Result := True;
finally
FileClose(h);
end;
end;
end;

.
.
.

procedure TForm1.Button1Click(Sender: TObject);
var
fechaCreacion, ultimoAcceso, ultimaModificacion : TDateTime;

begin

//fechas
if obtenerFechasFichero (txtFichero.Text, fechaCreacion, ultimoAcceso, ultimaModificacion) then
begin
RichEdit1.Lines.Add('Fecha creación: ' + DateToStr (fechaCreacion));
RichEdit1.Lines.Add('Fecha último acceso: ' + DateToStr(ultimoAcceso));
RichEdit1.Lines.Add('Fecha modificación: ' + DateToStr(ultimaModificacion));
end;

end;

vtdeleon
10-01-2006, 03:11:49
Saludos

negama por favor utiliza las etiquetas vB (se ve mejor, no?), informate en los enlaces de mi firma. ;)