Пост
Hello :)

DELPHI

-

Замена функции Sleep в Delphi

Всем, часто приходилось использовать в Delphi Функцию Sleep, в результате которой программа не отвечает N количество миллисекунд затормаживая процесc, предлагаю использовать альтернативу:

 

procedure pause(col:integer); 
var wtim:ttime;
begin
wtim:=encodetime(0,0,col,0)+time;
repeat
application.processmessages;
sleep(10);
until time>=wtim;
end;

 

col - пауза в секукндах. 

 

При использовании данной функции, программа не будет уходить в Даун, а будет дальше функционировать.

 

 

Пример 1:

 

showmessage('Привет');

sleep(5000);

showmessage('Пока');

 

В приведенном выше примере программа уйдёт в Даун на 5 секунд и будет не доступна, после вывода сообщения "Привет"

 

 

Пример 2:

 

showmessage('Привет');

pause (5);

showmessage('Пока');

 

 

В данном примере, после вывода сообщения на экран "Привет", программа будет работать в штатном режиме (не затормаживая процесс), через 5 секунд показав сообщение "Пока", собственно всё дело тут в  application.processmessages ))

  • Serj, 20 ноября 2011
5 комментариев
Avatar
  1. VotName
    VotName
    4 января 2024 19:55
    Здравствуйте. то, что нужно, спасибо! Но есть такой вопрос: как всё-таки заставить работать этот код с миллисекундами? Тут минимум одна секунда. В моем случае - это много. Нужно 100-300мс.
    1. VotName
      VotName
      4 января 2024 20:44
      upd.
      Прочитал про функцию "encodetime" и всё стало понятно (Hour, Min, Sec, and MSec). Соответственно, если поставить "col" в "MSec" а не "Sec", то всё работает как нужно. Спасибо за код!
  2. Наталья Плетминцева
    Наталья Плетминцева
    15 декабря 2013 02:21
    супер! помогло!!! То что искала!!!
    1. Serj
      Serj
      16 декабря 2013 00:51
      :))
  3. Анатолий Иванов
    Анатолий Иванов
    15 апреля 2013 20:26
    Не пойму смысл использования sleep в функции pause.Можно было и без нее обойтись.

© SERJ.WS 2011-2021