Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dokumentation und Implementation widersprüchlich - An was soll ich mich halten? (https://www.delphipraxis.net/174493-dokumentation-und-implementation-widerspruechlich-soll-ich-mich-halten.html)

Der schöne Günther 25. Apr 2013 10:47


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

Delphi-Quellcode:
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
Delphi-Quellcode:
GetLocalTime
als auch die Delphi-Implementation der WinAPI-Struktur
Delphi-Quellcode:
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.

Sir Rufo 25. Apr 2013 10:54

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
Ich glaube nicht, dass die lügen, sondern der Doku von Microsoft folgten, die wohl dieses Runden mal beinhaltet hat.

Siehe http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Diese Doku ist zuletzt in 2012 aktualisiert worden und ein Kommentar von 2011 besagt, dass die Funktion doch Millisekunden auflöst. Das macht nur Sinn, wenn die Doku zu dem Zeitpunkt etwas anderes behauptet hat ;)

Der schöne Günther 25. Apr 2013 10:58

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
Destruktive Absichten wollte ich der Doku jetzt nicht unterstellen, vielleicht einfach nur seit 15 Jahren nicht mehr aktualisiert (wie Hinweise, dass 16 Threads schon wirklich sehr viel seien oder Form-Transparenz erst ab einem Pentium 1 mit 90 MHz verfügbar ist) :-D

p80286 25. Apr 2013 11:00

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
Ja und?
Letztlich ist das doch Scheingenauigkeit. Ob eine Aufgabe in 200 Millisekunden früher oder später erledigt ist, sollte dem Benutzer egal sein.

Falls Du die Millisekunden wirklich brauchst, solltest Du auf andere Quellen zurückgreifen.

Gruß
K-H

mkinzler 25. Apr 2013 11:08

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
Vielleicht ist sein Problem gerade andersrum.

Der schöne Günther 25. Apr 2013 11:14

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
Dass Windows sowieso kein Echtzeit-OS ist und die Genauigkeit der Zeitstempel sowieso nicht sonderlich hoch ist weiß ich auch.

Es geht mir auch nicht wirklich um diesen konkreten Fall von Zeitangaben in Millisekunden, sondern von was ich, im Falle von Embarcadero Delphi tun soll:

Mich strikt an die Dokumentation halten denn in Zukunft könnte die bestens funktionierende Implementation geändert werden und zusätzliche Beschränkungen greifen plötzlich -

Oder prüfen, ob die Hilfe nicht die Wahrheit spricht und mich an der Implementation orientieren.

sx2008 25. Apr 2013 12:30

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

Zitat von Der schöne Günther (Beitrag 1212844)
Mich strikt an die Dokumentation halten denn in Zukunft könnte die bestens funktionierende Implementation geändert werden und zusätzliche Beschränkungen greifen plötzlich

Du kannst mit hoher Wahrscheinlichkeit davon ausgehen, dass die Now-Funktion auch in Zukunft Millisekunden liefern wird.
Rein logisch gesehen würde es überhaupt keinen Sinn machen auf volle Sekunden zu runden.
Im Gegenteil - man davon ausgehen, dass die Real-Time-Clocks in moderner Hardware immer besser werden und die Uhrzeit, die man über Now() erhält auf wenige Millisekunden genau sind.

Uwe Raabe 25. Apr 2013 12:50

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

Zitat von Der schöne Günther (Beitrag 1212844)
Mich strikt an die Dokumentation halten denn in Zukunft könnte die bestens funktionierende Implementation geändert werden und zusätzliche Beschränkungen greifen plötzlich -

Oder prüfen, ob die Hilfe nicht die Wahrheit spricht und mich an der Implementation orientieren.

Rein statistisch liegt die Implementation deutlich öfter an der Realität als die Dokumentation :)

stahli 25. Apr 2013 13:20

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
[OT]Wenn ich liese, das Meer würde sich teilen, schritte ich hindurch ... ich würde eher auf meine praktischen Erfahrungen setzen und den Quatsch lassen. :stupid:[/OT]

Der schöne Günther 25. Apr 2013 13:29

AW: Dokumentation und Implementation widersprüchlich - An was soll ich mich halten?
 
Aber von den Leuten die mutig genug waren, das Unmögliche zu wagen und erfolgreich waren, erzählt man sich noch tausende Jahre nachher.

Zusammenfassend:

Frage: Setze ich in Zukunft eher auf die Glaubensgrundsätze die mir die Delphi-Hilfe predigt oder meinen gesunden Menschenverstand?
Antwort: Wage, dich deines eigenen Verstandes zu bedienen.


Ich habe das Gefühl, grade zu einer gewaltigen Erkenntnis gelangt zu sein...:drunken:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.

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