![]() |
Re: Komme nicht weiter mit Zeitvergleichen?
Ich verstehe jetzt die Logik nicht wie Delphi mit der Zeit umgeht.
Das hier funkt nicht:
Delphi-Quellcode:
aber das:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time); if Now=DateTimePicker2.Time then showmessage('ja');
Delphi-Quellcode:
obwohl das ja gleich ist. :roteyes:
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time); if Label2.Caption=Label3.Caption then showmessage('ja'); |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
Wenn man zwei TDateTime hat und mit größer gleich abfragt stimmt, die Abfrage in jedem Fall. Das wichtige ist bei reiner Uhrzeitabfrage, daß man auch NUR die Uhrzeit vergleicht.
Delphi-Quellcode:
Habs nicht getestet, aber sollte so richtig sein.
procedure TForm4.FormShow(Sender: TObject);
begin DateTimePicker2.Time := TimeOf(Now()) end; procedure TForm4.Timer1Timer(Sender: TObject); begin if TimeOf(Now()) >= DateTimePicker2.Time then ShowMessage('Ok'); end; |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
In Now steht z.B. 2009-10-19 13:56:25.123 => TimeToStr(Now) => 13:56:25 !!!!!! Wenn Du diesen Code (auf einen Button legen) ausführst ( auf der Form musst du natürlich ein MemoFeld mit Namen Memo1 haben! )
Delphi-Quellcode:
Dann erscheint im Memo1 folgende Ausgabe:
begin
Memo1.Lines.Add( FloatToStr( Now ) ); Label1.Caption := TimeToStr( Now ); Memo1.Lines.Add( FloatToStr( Now ) ); Label2.Caption := TimeToStr( now ); Memo1.Lines.Add( FloatToStr( Now ) ); end;
Code:
Die Interpretation überlasse ich Dir!
40105,5863273264
40105,5863273611 40105,5863273727 |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Delphi-Quellcode:
uses DateUtils;
|
Re: Komme nicht weiter mit Zeitvergleichen?
Hallo,
noch mal zu deinem Code.
Delphi-Quellcode:
In Zeile 3 ist Now schon wieder etwas weiter
Label2.Caption:=TimeToStr(Now);
Label3.Caption:=TimeToStr(DateTimePicker2.Time); if Now=DateTimePicker2.Time then showmessage('ja'); als in Zeile 1. Wenn es wirklich nur ein Wecker sein soll, der genau einmal weckt, vergleiche mit >=
Delphi-Quellcode:
Label1.Caption:= TimeToStr('15:00'); // wir wollen 15:00 wecken
procedure Timer1OnTimer begin if Now>=StrToTime(Label1.Caption) then begin ShowMessage('klingellllll'); Timer1.Enabled:= False; end; end; Heiko |
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
|
Re: Komme nicht weiter mit Zeitvergleichen?
Zitat:
StrToTime( '15:00' ) => 0.625 Now ist aber irgendwie immer > 1.0 (aktuell > 40105.0) |
Re: Komme nicht weiter mit Zeitvergleichen?
Wusste gar nicht, dass einfach zwei Zeiten zu vergleichen so kompliziert ist. :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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