Ich würde auf jeden Fall empfehlen das mit TDateTime zu machen, und zum Beispiel die Differenz (Now - StartDatum) als Trigger zu nehmen, oder auf eine Ablaufzeit FEndTime zu vergleichen.
Delphi-Quellcode:
type
TMyForm = class
FStartTime : TDateTime;
end;
procedure TMyForm.Start;
begin
FStartTime := Now;
end;
procedure TMyForm.OnTick;
begin
if MilliSecondsBetween(Now, FStartTime) > 10000 then // if Now >= FEndTime then //<== Alternativ
begin
Alarm;
end;
end;
Diese Abfrage dann regelmäßig mit DoTick triggern lassen, wie unten beschrieben, über Timer, Thread oder sonstwas.
Der Vorteil ist das der Wecker dann immer beliebig genau ist nach der Systemzeit, egal wie genau der Timer ist.
Dem Timer traue ich da über große Zeiträume eher weniger zu, der könnte auch mal irgendwo hängen bleiben, aber als zyklischer "Ticker" ist der super..