Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.932 Beiträge
 
Delphi 12 Athens
 
#12

AW: Wecker - ELEGANTE Lösung mit Abbruch via Button gesucht

  Alt 25. Mai 2022, 16:34
Ich retriggere den Timer eigentlich fast immer in seiner OnTimer Routine.
So kann man den auch schön definiert abschalten und aufräumen lassen.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;

  DoTick;

  if FTimerIsRunning then
  begin
      Timer1.Enabled := True;
  end
  else
  begin
      CleanupAfterStop;
  end;
end;
So kann das was im OnTimer gemacht werden soll in Ruhe arbeiten, ohne Gefahr dass ein OnTimer ein zweites Mal reintriggert.
Insbesondere bei schnellen Ticks hilft das, damit es nicht aus dem Tritt gerät wenn DoTick mal 100ms und mal 500ms dauern kann.
Das geht natürlich auf insgesamt Kosten der Timergenauigkeit, aber die ist für mich sowieso meistens nicht relevant,
deshalb das TDateTime um die wirkliche Zeit zu bekommen.
Wenn ich hochpräzise Timer brauche dann nehme ich sowieso was Anderes.

Geändert von Rollo62 (25. Mai 2022 um 16:36 Uhr)
  Mit Zitat antworten Zitat