Zitat von
v2afrank:
Das funktioniert nicht. Hatte ich auch schon ausprobiert. (while (Milliseconds > 0)) ist dann ja auch immer true.
Du hast recht. Dann halt so (Ist sogar ´nen Tick schneller. =) ):
Delphi-Quellcode:
procedure Delay(Milliseconds: Cardinal);
var
Tick: DWord;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := GetTickCount + Milliseconds;
while (Tick > GetTickcount) and
(MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
begin
Application.ProcessMessages;
end;
finally
CloseHandle(Event);
end;
end;
Zitat von
v2afrank:
Was (anscheinend) geholfen hatte, war folgende Zeile
Milliseconds := integer(Tick) - integer(GetTickcount);
Da ich aber nicht verstehe was da passiert, traue ich mich nicht das wirklich zu benutzen
Ein ganz normaler Typcast. Irgendwie scheint es halt Probleme zu geben, wenn DWORD, Integer und Cardinal aufeinander prallen. Das Spiel mit den signed und unsigned Variablen sollte man also vorsichtig genießen.
Ich würde mich freuen, wenn du meine Lösung einmal testen würdest.
LG,
Xong