Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#7

AW: Fehler bei FileDateToDateTime(FileGetDate(FHandle)) wenn Dateidatum < 1980

  Alt 21. Apr 2011, 08:49
Ich benutze Windows.GetFileTime. Diese Funktion liefert eine Zeit ab 1601 mit einer Auflösung von 100ns. Allerdings muss man sich da zunächst einen ganzen Wald von Funktionen drum herum bauen, weil die Funktion zunächst mal die Zeit als UTC liefert. Die Zeit muss zunächst in die lokale Zeit umgerechnet werden. Danach kann man mit FiletimeToSystemTime die Zeit in ein brauchbares Format umwandeln. Systemtime ist ein Record welches Tag,Monat,Jahr usw. enthält. Damit kann man dann ganz gut weiterarbeiten.
Die Funktionen die bei Delphi benutzt werden, stammen noch aus DOS-Zeiten (bzw. sind dazu kompatibel) und sind schon seit Jahrzehnten veraltet.

Delphi-Quellcode:
var
FileAge: TFiletime;
SystemTime: TSYSTEMTIME;
begin
  GetFileTime(Handle, nil, nil, @FileAge);
  FileTimeToLocalFileTime(FileAge, FileAge);
  FiletimeToSystemTime(FileAge, SystemTime);
  EncodeDate(SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay);
  ...
end;
  Mit Zitat antworten Zitat