wenn es nicht ganz genau sein muß, dann geht auch sowas (falls ich mich nicht verrechnet hab)
Delphi-Quellcode:
// Timer1.Enabled per Default auf False
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
Timer.Enabled := False;
Showmessage(TimeToStr(Now));
Timer1.Intervall := 24*60*1000 - (Trunc(Now * 24*60*1000) - Trunc(Now * 24)*60*1000);
Timer1.Enabled := True;
End;
// Timer das erste Mal starten
Timer1.Intervall := 24*60*1000 - (Trunc(Now * 24*60*1000) - Trunc(Now * 24)*60*1000);
Timer1.Enabled := True;
ohne langsamen StrToTime und etwas langsameren DecodeTime
Delphi-Quellcode:
Var LastTime: Integer; // am Besten im Private-Abschnitt von TForm1 deklarieren
Procedure TForm1.Timer1Timer(Sender: TObject);
Var Time: TDateTime;
Begin
Time := Now;
Label1.Caption := TimeToStr(Time);
If (Frac(Time) >= 0.25{6:00}) and (Frac(Time) < 0.8{19:12})
and (Trunc(Time * 24) > LastTime) Then Begin
LastTime := Trunc(Time * 24);
Showmessage(TimeToStr(Time));
End;
End;
// und nicht vergessen LastTime zu initalisieren
// LastTime := 0;
//
// ist es aber in Private von TForm1 deklariert,
// dann ist es automatisch schon initialisiert