Hallo Zusammen,
vielen Dank für die vielen guten Antworten!
Ich muss gestehen, dass ich die Berechnung der Zeiten nicht ganz verstehe - ich hatte noch nie damit zu tun...
Was haltet ihr denn davon:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var aHour,aMin,aSec,aMSec: Word;
begin
Timer1.Interval:=3600000;
Label1.Caption := TimeToStr(Time);
DecodeTime(now,aHour,aMin,aSec,aMSec);
if (aHour in [6..19]) and (aMin in [0..10]) then
ShowMessage('Volle Stunde');
if (aHour = 5) and (aMin in [0..10]) then //Damit, wenn das Programm sehr lange
begin //läuft, ich nicht irgendwann durch
Timer2.Enabled:=true; //sehr sehr viele Hänger aus dem
Timer1.Enabled:=false; //10 Minutenfenster falle...
end;
end;
Damit habe ich meinen Timerintervall auf 1h festgelegt (ich muss mir also nicht mehr merken, ob schon eine Aktualisierung in der aktuellen Stunde durchgeführt wurde), aber eventuelle Verzögerungen werden durch die Minutentoleranz wieder abgefangen.
Und damit das Programm nicht immer nur in den ersten 10 Minuten einer Stunde gestartet werden sollte, schicke ich das vorab:
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var aHour,aMin,aSec,aMSec: Word;
begin
Timer2.Interval:=1000;
Label1.Caption := TimeToStr(Time);
Timer1.Enabled:=false;
DecodeTime(now,aHour,aMin,aSec,aMSec);
if (aMin in [0..5]) then //Wird ja nach dem ersten Durchlaufen der
begin //IF-Schleife abgeschlatet...
Timer1.Enabled:=true;
Timer2.Enabled:=false;
showmessage('Timer2 false');
end;
end;
Wie ist eure Meinung dazu?
Danke