Создание задержки без таймера

WinHack

Администратор
23 Фев 2015
2,664
1,913
bsfo.ru
Вот пример использования цикла, который проверяет время и вызывает Application.ProcessMessages, чтобы разрешить сообщения Windows, которые будут выполняться в течение цикла.

Код:
procedure Delay(ms : longint);
var
  TheTime : LongInt;
begin
  TheTime := GetTickCount + ms;
  while GetTickCount < TheTime do
    Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Start Test');
  Delay(2000);
  ShowMessage('End Test');
end;
Еще один пример:

Код:
procedure lcDelay(const sec, msec: word);[/B][/B]
[B][B]var
  TimeOut: TDateTime;
begin
  TimeOut := Now + EncodeTime(0, sec div 60, sec mod 60, msec);
  While Now < TimeOut do
     Application.ProcessMessages;
end;