Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.157 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?

  Alt 25. Apr 2013, 11:47
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
  1. Warum lügt die Delphi-Hilfe mich an?
  2. 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.
  Mit Zitat antworten Zitat