![]() |
TTimer abfragen, wann er wieder auslöst?
Ich habe einen TTimer mit z.B. Interval = 60000 msec. (1 min)
Ich würde nun gerne von einer anderen Prozedur aus abfragen, WANN der Timer das nächste Mal auslösen wird, also wie eine Countdown-Abfrage (z.B "in 43222 msec"). Der Sinn dahinter ist, dass ich eine Datenbank regelmäßig mit neuen Messwerten fülle, aber auch manuelle Eingaben des Nutzers möglich sind. Ich würde nun gerne nur dann eine extra DB-Aktualisierung durchführen, wenn die Timer-Aktualisierung noch lange nicht dran ist... nicht aber, wenn sie sowieso in ein paar Sekunden erfolgen würde und sich ggf. sogar überlappt. Kann man abfragen, wie der Timer gerade steht? |
AW: TTimer abfragen, wann er wieder auslöst?
Nicht direkt per Eigenschaft, aber Du musst Dir doch nur die Uhrzeit der letzten Aktualisierung merken, und zur Prüfung den Timerintervall hinzufügen und von dem Ergebnis die aktuelle Uhrzeit abziehen.
|
AW: TTimer abfragen, wann er wieder auslöst?
Laß denTimer alle einer Sekunde auslösen und zähle intern eine Variable von 59 (60) runter ... bei 0 wird die Variable wieder auf 59 gesetzt und der/die Befehl(e) verarbeitet.
Wenn du nun diese Variable ausließt, dann hast du deinen Countdown. |
AW: TTimer abfragen, wann er wieder auslöst?
Danke für Eure Vorschläge.
|
AW: TTimer abfragen, wann er wieder auslöst?
Geschickter wäre es ja den Timer bei einer Abfrage (egal ob automatisch oder manuell ausgelöst) zu disablen und nach der Abfrage wieder Enablen.
Dann überlappt nix und es wird immer frühestens nach dem Intervall ein Update durch den Timer angestossen. |
AW: TTimer abfragen, wann er wieder auslöst?
Zitat:
Ein erhöhen des Timers auf 2500, der 1000 war löste das Problem - ein Durchlauf der Programmschleife dauerte 1,6sec. |
AW: TTimer abfragen, wann er wieder auslöst?
Zitat:
Also hier ist doch das gemeint, oder nicht, so mache ich das ständig ?
Delphi-Quellcode:
procedure TForm.Timer1Timer( Sender : TObject );
begin Timer1.Enabled := False; //Mache was, das länger dauern kann Timer1.Enabled := True; end; |
AW: TTimer abfragen, wann er wieder auslöst?
Das ist Best Practice im Umgang mit Timern. Das geschilderte Problem muss also woanders liegen.
Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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