procedure
delay(msecs:
integer
);
var
Tick: DWord;
Event: THandle;
begin
Event := CreateEvent(
nil
,
False
,
False
,
nil
);
try
Tick := GetTickCount + DWord(msecs);
while
(msecs >
0
)
and
(MsgWaitForMultipleObjects(
1
, Event,
False
, msecs, QS_ALLINPUT) <> WAIT_TIMEOUT)
do
begin
Application
.
ProcessMessages;
msecs := Tick - GetTickcount;
end
;
finally
CloseHandle(Event);
end
;
procedure
Delay(dwMilliseconds:DWORD);
var
iStart,iStop:DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application
.
ProcessMessages;
until
(iStop - iStart) >= dwMilliseconds;
end
;