Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться с задержкой [D5]


_alex_ ©   (2004-11-22 14:38:00) 

Добрый день!
Мне необходимо вставлять по ходу функции временные задержки, их я реализую с помощью процедуры:

procedure Delay(Seconds, MilliSec: Word);
var
  TimeOut: TDateTime;
begin
tmpCountDelay:= 0;
TimeOut:= Now + EncodeTime(0, Seconds div 60,
         Seconds mod 60, MilliSec);
while Now < TimeOut do
 Application.ProcessMessages;

В половине случаев вместо 1,5 секунд эта функция выполняется все 3–5 секунд.
Из-за чего это происходит?
Now или ProcessMessages?


Yanis   (2004-11-22 18:05:00) [1]


procedure Wait(T: Integer);
var
 h:THandle;
begin
 H := CreateEvent(nil,true,false,'');
 WaitForSingleObject(h,T);
 CloseHandle(h);
end;


Использование:


Wait(1000); // одна секунда


Digitman   (2004-11-22 17:04:00) [2]

Удалено модератором


ggs   (2004-11-22 16:57:00) [3]

Удалено модератором


Piter   (2004-11-22 15:43:00) [4]

Задержки в программе не нужны вообще. Это говорит о неправильном алгоритме работы


КаПиБаРа   (2004-11-22 15:03:00) [5]

Удалено модератором


Skyle   (2004-11-22 14:43:00) [6]

> _alex_   (22.11.04 14:38)
> Из-за чего это происходит?
Гвозди с микроскопом не сочетаются.

Используй >  [1] ламер ©   (22.11.04 14:41)либо таймер.


ламер   (2004-11-22 14:41:00) [7]

используй либо Sleep(), либо (если уж так нужен цикл) GetTickCount().


Наверх

Титульная страница Поиск, карта сайта Написать письмо