Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#10

AW: TTimer zu schnell?

  Alt 15. Jul 2024, 13:21
Eventuell hilft ja auch, das Timer.Enabled innerhalb des Events temporär auf False zu stellen (man beachte das Exit im if-then):
Delphi-Quellcode:
procedure TMyClass.OnCheckTimeManipulation(Sender: TObject);
var
  Difference : Double;
begin
  (Sender as TTimer).Enabled := False;
  Difference := Now-FLastCheckTime;

  // Wenn die Zeit nicht um mindestens 1 min. fortgeschritten ist wurde
  // sie manipuliert!
  if not (Difference >= System.DateUtils.OneMinute) then
  begin
    log.Send(LevelRed, cCategory,
             'Systemzeit wurde manipuliert (oder Zeitumstellung): ' +
             'Alt: ' + FLastCheckTime.ToString + ' Neu: ' + now.ToString);

    MessageDlg(rTimeManipulation, mtError, [mbOK], -1);
    Application.Terminate;
    Exit;
  end;

  FLastCheckTime := now;
  (Sender as TTimer).Enabled := True;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat