Servus !
Den nachfolgenden, gekürzten Programmausschnitt verwende ich, um zeitgesteuert etwas in Betrieb zu nehmen bzw. abzuschalten, wobei ich die Zeitsteuerung über TJvClock realisiere.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| procedure Delay(ms : DWord); var TheTime : DWord; begin TheTime := GetTickCount + ms; while GetTickCount < TheTime do Application.ProcessMessages; end;
procedure TForm1.JvClock1Alarm(Sender: TObject); begin MessageMemo.Lines.Add('Alarm ausgelöst!'); if odd(JvClock1.Tag) then Ausschalten else Einschalten; end;
procedure TForm1.Einschalten; begin MessageMemo.Lines.Add('30 Sek. warten'); Delay(30000); MessageMemo.Lines.Add('Test beginnen'); StartClick(nil); MessageMemo.Lines.Add('Fertig, auf nächste Aktion warten');end;
procedure TForm1.Ausschalten; begin MessageMemo.Lines.Add('Test beenden'); StopClick(nil); MessageMemo.Lines.Add('30 Sek. warten'); Delay(30000); MessageMemo.Lines.Add('Fertig, auf nächste Aktion warten'); end; |
Unglücklicherweise bleibt die Uhr nicht nur während der Delay-Pause stehen, nein, auch wenn der mit StartClick in Gang gesetzte Programmteil läuft, wird die Uhrzeit nicht weiter gezählt. Das hat zur Folge, daß der Programmteil, der eigentlich über StopClick angehalten würde, immer weiter läuft.
Ist das nun ein normales Verhalten von TJvClock, oder muß ich hier etwas extra einstellen?
Gruß,
Adrian