Einzelnen Beitrag anzeigen

NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#1

TDateTimePicker mit modus Time kennt die Zeit nicht

  Alt 13. Jun 2022, 19:44
Diese Frage richtet sich an jene, die sich damit bereits die Haare gerauft haben.
Ich finde keinen Weg, der so funktioniert, wie die Handbücher sagen.

Doch der Reihe nach:
Ich verwende einen TDateTimePicker im Modus kind = dkTime, also so, dass man die Zeit einstellen / auswählen kann.
Ich möchte jetzt nichts Anderes tun, als zu vergleichen, wieviele Sekunden zwischen der gewählten Uhrzeit sind und "now".

Das klingt trivial, doch Delphi (XE 3) spinnt herum.
Das Problem: Es wird der 1.1.1899 davor geschrieben oder eben nicht.
Die Vergleiche zwischen den Zeiten werden völlig erratisch, denn ob es der 1.1.1899 um 20:31 oder nur 20:31,
Es fliegt mir in allen Operationen um die Ohren!

Ich probierte bis jetzt TDateTime und TTime als Typen.
Ich arbeitete mit datutils und systemutils. GetTime und Time
Ich probierte SecondsBetween() und griff selbst auf Frac zurück nachdem ich die double Werte versuchte, zu greifen.
Die Ergebnisse sind sehr selten zufällig richtig, doch meistens sehr hohe negative Zahlen.

Meiner Einschätzung nach könnte das Problem entweder liegen in der TDateTimer Komponente von Delphi XE3.
Oder aber in Windows 10, das seit ca 2 Jahren in Feinheiten mit Delphi und dem Datumszugriff muckt. Das äußert sich so, dass das Datum zuweilen als "Null" an Delphi durchgereicht wird. (Als Workaround gab es nur eine Änderung in der Formatanzeige von Win 10.)

Weiß jemand einen Workaround für mich?
Wie gesagt, geht es nur datum, die ausgewählte Zahl des TDateTimePickers mit der Jetzt-Zeit zu vergleichen, und die Sekunden dazwischen zu berechnen, - das leider aber ziemlich oft. D.h. je einfacher der Workaround wäre, desto besser.

Wenn es an Win 10 (21H2) liegen sollte, dann wäre guter Rat teuer.

und PS: Es wird nicht einmal der TDateTimePicker unbedingt benötigt. Es soll nur eine Zeit-Eigabe sein, wo der Nutzer keinen Blödsinn eingeben kann.
  Mit Zitat antworten Zitat