Konkretes Beispiel:
SysUtils.Now()
-
Die Dokumentation schreibt:
Zitat:
Anmerkung: Obwohl TDateTime-Werte auch Millisekunden darstellen können, wird Now immer auf die nächste Sekunde gerundet.
Schaue ich mir die (Windows-)Implementation von Now() an:
Delphi-Quellcode:
function Now: TDateTime;
var
SystemTime: TSystemTime;
begin
GetLocalTime(SystemTime);
with SystemTime do
Result := EncodeDate(wYear, wMonth, wDay) +
EncodeTime(wHour, wMinute, wSecond, wMilliseconds);
end;
Sowohl die
WinAPI-Methode
GetLocalTime
als auch die Delphi-Implementation der
WinAPI-Struktur
SYSTEMTIME
kennen Millisekunden:
Delphi:
Delphi-Quellcode:
_SYSTEMTIME = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
TSystemTime = _SYSTEMTIME;
WinAPI:
Code:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
Ich verwende in meinen Projekten Now() momentan auch so, dass ich die Millisekunden benutze und alles funktioniert auch bestens. Jetzt frage ich mich
- Warum lügt die Delphi-Hilfe mich an?
- Sollte ich ihr doch besser glauben und nicht mehr auf die Millisekunden vertrauen? Vielleicht ändert sich das ja in Zukunft.
Ich bin gespannt auf Meinungen und Ratschläge.