![]() |
Zeiten vergleichen
Hi dpler,
Habe leider wieder Mal ein kleines Problem. Und zwar habe ich einen Button beim klick startet dieser einen von zwei Timern. Dieser Timer soll jetzt jede sekunde überprüfen ob DateTimePicker1.Time und now gleich sind. DateTimePicker1.Time = now geht da natürlich nicht, desshalb habe ich mir diesen Code gebastelt:
Delphi-Quellcode:
In meinem Testprogramm funktionierte dieser Code auch.
procedure Tfrme_ausschalten.Timer1Timer(Sender: TObject);
begin If DateTimePicker1.Time < now then begin If DateTimePicker1.Time+0.00001 > now then begin //hier der code der ausgeführt wird end; end; end; Aber dann im echten Programm funktioniert dieser nicht mehr. Kann mir vielleicht jemand den richtigen Code geben? Vielen vielen dank greez headi |
Re: Zeiten vergleichen
Hi, du könntest dafür auch das Gleichheitszeichen nehmen. Und zwar dann, wenn du im NOW die darin enthaltenen Millisekunden jedesmal auf Null zurückstellst:
Delphi-Quellcode:
if DateTimePicker1.Time = RecodeMilliSecond(Now, 0) then ...
|
Re: Zeiten vergleichen
Es wird wohl einfach nur so sein, das die Diverenz größer als 0,00001 ist.
Speicher einfach, ob der Code schon ausgeführt wurde
Delphi-Quellcode:
oder schalte einfach den Timer aus
Var ausgefuehrt: Boolean;
procedure Tfrme_ausschalten.Timer1Timer(Sender: TObject); begin If (DateTimePicker1.Time < now) and not ausgefuehrt then begin ausgefuehrt := True; //hier der code der ausgeführt wird end; end; // ausgefuehrt muß natürlich vorher FALSE sein
Delphi-Quellcode:
procedure Tfrme_ausschalten.Timer1Timer(Sender: TObject);
begin If DateTimePicker1.Time < now then begin Timer1.Enabled := False; //hier der code der ausgeführt wird end; end; |
Re: Zeiten vergleichen
Hallo Pascal,
in Now ist auch der aktuelle Tag enthalten, darum würde ich den Vergleich so ausführen:
Delphi-Quellcode:
Grüße vom marabu
if DateTimePicker.Time < Frac(Now) then ...
|
Re: Zeiten vergleichen
|
Re: Zeiten vergleichen
Zitat:
Zitat:
Geht leider auch nicht, ausschalten kann ich ja sowieso, aber er vergleicht ja nicht richtig. Bei diesem code ist immer jenachdem nach oben oder unten offen. Auch wenn ich die Diverenz grösser mache, funktioniert es nicht. Zitat:
Liegt das wirklich an mir? Kann mir mal jemand sagen was ich falsch mache? greez headi |
Re: Zeiten vergleichen
Zitat:
|
Re: Zeiten vergleichen
Wenn ein Vergleich nicht so funktioniert, wie du es erwartest, dann schaue dir die Werte mal an, welche du miteinander vergleichen willst.
Delphi-Quellcode:
marabu
ShowMessage(DateTimeToStr(DateTimePicker.Time));
|
Re: Zeiten vergleichen
Zitat:
Also habe ich recodemillisecond auch mal beim DateTimePicker angewandt aber ging immer noch nicht :cry: Zitat:
Das komische ist das beim testprogramm alles ging mit meinem code, nur immer wenn ich den Code in mein eigentliches Programm einbaue geht er nicht mehr :cry: was mache ich nur falsch? greez headi |
Re: Zeiten vergleichen
Zitat:
Wenn du 'Time' (für den Test) allerdings selbst wieder von NOW ableitest (z.B. im Click-Eventhandler eines Buttons):
Delphi-Quellcode:
dann ist dafür natürlich auch wieder die RecodeMillisecond-Funktion nötig.
DateTimePicker1.Time := frac(RecodeMillisecond(NOW, 0) + 5*oneSecond);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 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 by Thomas Breitkreuz