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

Тема в разделе "Delphi", создана пользователем WinHack, 23 ноя 2016.

  1. WinHack
    Вот пример использования цикла, который проверяет время и вызывает 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;