mit GetTickCount bekommt man die Zeit in Millisekunden seit windowsstart.
Bevor du den Timer startest holst du dir also die Zeit und addierst deine spanne dazu.
Delphi-Quellcode:
EndTime := GetTickCount + 6000;
Timer1.Interval := 500;
Timer1.Enabled := True;
und im OnTimer ereignis
Delphi-Quellcode:
var LTime: Cardinal;
begin
LTime := GetTickCount;
if LTime < EndTime then
caption := 'verbleibend: ' + inttostr(EndTime - LTime) + ' sekunden'
else begin
Timer1.Enabled := False;
caption := 'fertig';
end;
und ein Timer ist keine Schleife in einem Thread. Das Timer-Event wird von Windows ausgelöst und es wird an die Anwendung eine Message geschickt. Alternativ kann man auch wenn man die
Api-Funktion dafür nutzt direkt eine Funktionsadresse angeben so das keine Message geschickt wird...