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;