Registriert seit: 3. Sep 2004
434 Beiträge
Delphi 10.4 Sydney
|
AW: TDateTime kann nicht korrekt verglichen werden
16. Feb 2011, 10:21
Einen "Nachtrag" noch, da ich leider den letzten Eintrag nicht mehr bearbeiten kann:
Mir ist gerade ein uralter Trick eingefallen, mit dem ich vor langer Zeit schonmal ein änhliches Problem gelöst/umgangen habe:
NeuerDateTimeWert := StrToDateTime(DateTimeToStr(AlterDateTimeWert));
"Erschreckend" an der Sache ist, dass Delphi aus AlterDateTimeWert = 05.01.2011 10:52:11 --> NeuerDateTimeWert = 05.01.2011 10:52:10 macht. (Rundungsproblematik beachten! laut Überwachung lokaler Variablen)
Identisch ist natürlich in der Überwachung: DateTimeToStr(AlterDateTimeWert) = '05.01.2011 10:52:11' und StrToDateTime(DateTimeToStr(AlterDateTimeWert)) = 05.01.2011 10:52:10.
Somit scheint Delphi bei der Darstellung von "nicht runden" TDateTimeWerten in der überwachung lokaler Variablen und Liste überwachter Ausdrücke NICHT die Funktion DateTimeToStr() zu benutzen, sondern etwas selbstgebasteltet.
Finde ich persönlich für gescheites Debuggen sehr, sehr fragwürdig, denn man sollte schon erwarten können, dass der menschenlesbare Wert von TDateTime identisch ist mit DateTimeToStr() eben dieses Wertes...
Feedback dazu erwünscht, vielleicht mache ja ich was falsch. Ansonsten: sollte man das mal wirklich als Delphi-Bug posten?
Geändert von berens (16. Feb 2011 um 10:24 Uhr)
|