Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   FileDateToDateTime ist ungenau (https://www.delphipraxis.net/84036-filedatetodatetime-ist-ungenau.html)

ils566 10. Jan 2007 13:30


FileDateToDateTime ist ungenau
 
Hallo,

ich habe festgesetellt, dass die Delphi-Funktion FileDateToDateTime() die Millisekunden bei der Umwandlung des File-Timestamp in ein TDateTime wegläßt. Dadurch entsteht das Problem, dass der Vergleich von Dateien immer um ein paar Millisekunden untschiedlich ist.

In der SysUtils.pas ist FileDateToDateTime wie folgt definiert:
Delphi-Quellcode:
function FileDateToDateTime(FileDate: Integer): TDateTime;
{$IFDEF MSWINDOWS}
begin
  Result :=
    EncodeDate(
      LongRec(FileDate).Hi shr 9 + 1980,
      LongRec(FileDate).Hi shr 5 and 15,
      LongRec(FileDate).Hi and 31) +
    EncodeTime(
      LongRec(FileDate).Lo shr 11,
      LongRec(FileDate).Lo shr 5 and 63,
      LongRec(FileDate).Lo and 31 shl 1,
      0);                                      <---- hier wird Millisec Anteil einfach auf Null gesetzt.
end;
Weiß jemand, wie der Millisekunden-Anteil richtig berechnet wird? Danke.
Grüße
Ilias

[edit=sakura] [delphi]Tags Mfg, sakura[/edit]

marabu 10. Jan 2007 13:36

Re: FileDateToDateTime ist ungenau
 
Hallo Ilias,

FileDate ist definitionsgemäß nur auf 2 Sekunden genau. Du musst deine Vergleiche daran anpassen.

Grüße vom marabu

DP-Maintenance 10. Jan 2007 16:13

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Windows API / MS.NET Framework API" verschoben.
Delphifragen gehören in Delphisparten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz