Hi,
diese Variante funktioniert auch, wenn der 49. Tag überschritten wird:
Delphi-Quellcode:
procedure Delay(const Milliseconds: Cardinal);
var c: Cardinal;
begin
c := GetTickCount;
while (GetTickCount-Milliseconds < c) and not (Application.Terminated or DelayCanceled) do
begin
Application.ProcessMessages;
Sleep(1);
end;
end;
Anmerkung:
Eine globale Variable
DelayCanceled: Boolean, damit das Delay auch jederzeit (z.B. bei einem Klick auf einen Button) abgebrochen werden kann.
Sleep(1); damit das Programm nicht ständig mit 100% CPU-Auslastung läuft.
Application.Terminated, damit Delay auch abgebrochen wird, falls man das Programm schließen will.
BTW: In der CL sollte sich dazu auch jede Menge finden lassen:
Delay