AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TDateTime kann nicht korrekt verglichen werden
Thema durchsuchen
Ansicht
Themen-Optionen

TDateTime kann nicht korrekt verglichen werden

Ein Thema von berens · begonnen am 14. Feb 2011 · letzter Beitrag vom 16. Feb 2011
 
berens

Registriert seit: 3. Sep 2004
441 Beiträge
 
Delphi 10.4 Sydney
 
#1

TDateTime kann nicht korrekt verglichen werden

  Alt 14. Feb 2011, 12:53
Hallo zusammen!

Nachdem ich schon wieder ernsthaft an mir selbst gezweifelt habe, bin ich doch langsam am Überlegen, ob das Folgende nicht vielleicht doch ein Delphi-Bug sein könnte:

Vorab: Ich lasse alle TDateTime-Werte * Sekunden pro Tag nehmen (nur den Nachkommateil natürlich), um die Anteiligen Sekunden zu ermitteln (gerundet) und teile dies dann wieder durch die Sekunden pro Tag. Das hat den Vorteil, dass ich diese TDateTime-Werte immer auf die volle Sekunde gerundet habe, damit ich beim Vergleichen keine Abweichungen oder Fehler durch z.B. Millisekunden habe.

Leider kommt es manchmal vor, dass Delphi irgendwie scheinbar zu ungenau Arbeitet.

Auf dem beigelegten Screenshot kann man folgendes sehen:

Wir befinden uns in einer meiner Prozeduren. (Die Variablen sind alle nur für diesen Screenshot erstellt, also bitte nicht wegen der Benennung meckern )

u.a.:
Delphi-Quellcode:
var
  dt: TDateTime;
  dtErsterDesMonats: TDateTime;
  a, b: TDateTime;
  e, f: string;
  t: string;
_NextFromDateTime ist ein TDateTime-Wert, welcher der Prozedur übergeben wird. Er soll im Laufe der Prozedur mit dt verglichen werden.

Am Haltepunkt auf dem Screenshot sehen wir in der Liste der überwachten Ausdrücke und lokalen Variablen, dass dt == _NextFromDateTime ist. Sowohl als Double, Float und String.

Lediglich die TDateTime-Werte unterscheiden sich scheinbar(!) da z.B. (a = b) und (dt = _NextFromDateTime) jeweils False ergibt. In der Auswertung werden TDateTime-Werte jedoch ausschließlich als String angezeigt (dd.mm.yyyy HH:nn), was sich auch beim Umschalten auf "Gleitkomma" o.ä. bei den überwachten Ausdrücken nicht ändert!

Tja, und nun?

1) Wie kann ich beim Debuggen sehen, welchen (Gleitkommawert) die beiden TDateTime-Variablen haben? Der Typcast als Float oder Double gibt beide ja als identisch aus?

2) Wie kann ich TDateTime-Werte möglichst einfach korrekt vergleichen
3) , so dass höchstens die Sekunden, nicht aber Millisekunden vergleichen werden?

Danke schonmal. :/
Angehängte Grafiken
Dateityp: png screenshot.PNG (74,1 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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