![]() |
Komme nicht weiter mit Zeitvergleichen?
Hallo,
ich möchte einen Wecker schreibe und hab folgendes geschrieben:
Delphi-Quellcode:
Die if Abfrage funktioniert komischerweise nicht, verstehe nicht wieso, ist doch alles richtig geschrieben. :wall: Timer.Interval :=1 sek. Wer weiß da weiter? Danke!
procedure TForm4.FormShow(Sender: TObject);
begin DateTimePicker2.Time:=Now; end; procedure TForm4.Timer1Timer(Sender: TObject); begin if DateTimePicker2.Time=Now then ShowMessage('Ok'); end; |
Re: Komme nicht weiter mit Zeitvergleichen?
Der Wert von Now ist genauer als der Wert, den du angibst. 15.42 Uhr ist halt nicht derselbe Zeitpunkt wie 15.42 Uhr, 13 Sekunden und 123 Millisekunden.
Außerdem: TDatetime ist ein Float-Typ - die sollte man generell nicht auf Gleichheit überprüfen. |
Re: Komme nicht weiter mit Zeitvergleichen?
Also
Delphi-Quellcode:
zeigt auch Sekunden an.... hm... und Timer vergleicht auch Millisekunden :gruebel: ah..jah...
DateTimePicker2.Time
Wie vergleicht man dann am besten eine Uhrzeit? Auch so, dass es auf Fremdsprachwindows läuft. :gruebel: |
Re: Komme nicht weiter mit Zeitvergleichen?
Und wenn man etwas nicht versteht, dann gibt man sich die Werte mal in einer Memo aus und schaut, ob der Vergleich wirklich passen könnte
Delphi-Quellcode:
procedure TForm4.Timer1Timer(Sender: TObject);
var Vergleich : TDateTime; begin Vergleich := now; // Merken, weil now ja weiter läuft!!! Memo1.Lines.Add( Format( 'DateTimePicker: %s Now: %s', [ FloatToStr( DateTimePicker2.Time ), FloatToStr( Vergleich ) ] ); if ( DateTimePicker2.Time = Vergleich ) then ShowMessage('Ok'); end; |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Vielleicht kommst Du ja mit der Delphi-Procedure DecodeTime() weiter. Diese zerlegt Dir den Zeitwert in Stunden, Minuten, ..., welche Du dann vergleichen kannst.
Hans. |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
Und der Wert von Now wird sich deshalb gemerkt, damit auch das ausgegeben wird, was danach dann auch verglichen wird! |
Re: Komme nicht weiter mit Zeitvergleichen?
OK, weils keiner wirklich erklärt hat, versuch ich mich mal daran:
Wissenswerte Voraussetzungen:
Wenn Du also (millisekunden-)genaue Gleichheit prüfen möchtest ist es extrem wahrscheinlich, daß Du nicht die korrekte Millisekunde erwischst. Deshalb soltlest Du vielleicht nur Sekunden- oder Minutengenau prüfen. Wie Du das anstellst überlass ich mal Deiner Phantasie. Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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