Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.06;
Скачать: CL | DM;

Вниз

Задержка   Найти похожие ветки 

 
Soon   (2008-06-06 03:44) [0]

День добрый, во время работы где-то подсмотреной процедуры задержки..

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

..невозможно закрыть форму. Можно ли как-то этого избежать?


 
ЮЮ ©   (2008-06-06 05:52) [1]

while not Application.Terminated and (GetTickCount < TheTime) do
Application.ProcessMessages;


Не понятноЮ правда, кде может понадовится такая &laquo;задержка&raquo;.


 
ЮЮ ©   (2008-06-06 05:53) [2]

> Не понятноЮ правда, кде может понадовится такая «задержка».

сорри, за акцент :)

Не понятно, правда, где может понадобиться такая &laquo;задержка&raquo;


 
DiamondShark ©   (2008-06-06 08:21) [3]


> Не понятноЮ правда, кде может понадовится такая «задержка».

Это не задержка, это грелка для процессора.


 
Рамиль ©   (2008-06-06 08:41) [4]

Таймер чем не устраивает?


 
Тын-Дын ©   (2008-06-06 10:02) [5]


> ..невозможно закрыть форму. Можно ли как-то этого избежать?


Выставить boolean-флаг, в цикле проверять.


 
{RASkov} ©   (2008-06-06 19:41) [6]

> [5] Тын-Дын ©   (06.06.08 10:02)
> Выставить boolean-флаг, в цикле проверять.

Вместе с автором см [1]...
Не против альтернативных вариантов, но изврат никчемный ненужен :)
Чем boolean-флаг, такой как Application.Terminated - не устраивает?)


 
Тын-Дын ©   (2008-06-06 20:33) [7]

еще раз вопрос перечитай и подумай.


 
Loginov Dmitry ©   (2008-06-06 22:07) [8]

> невозможно закрыть форму. Можно ли как-то этого избежать?


1. Если форма модальная, то врядли она при нажатии на крестик закроется (там анализ ModalResult идет в отдельном цикле).
2. Будь человеком, не мучай процессор, добавь после вызова Application.ProcessMessages хотябы Sleep(10) :)
3. Для чего понадобились такие пляски с задержкой? Имхо, изврат все это!


 
{RASkov} ©   (2008-06-06 22:07) [9]

> [7] Тын-Дын ©   (06.06.08 20:33)

Да хоть триста раз перечитывай.... скажи чем отличается boolean-флаг, за которым еще и следить программисту нужно, от Application.Terminated - который борладновцы уже "отследили"? :)


 
{RASkov} ©   (2008-06-06 22:14) [10]

> Если форма модальная,

Хм... ну да разговор-то о форме, а не о программе в целом.... тады

> Тын-Дын

Сорри... т.е. извиняюсь за нелепый "наезд" :(


 
Loginov Dmitry ©   (2008-06-06 22:17) [11]

В качестве решения проблемы с модальными формами могу предложить следующее:

procedure Delay(ms : longint; AForm: TForm);
var
 TheTime : LongInt;
begin
 TheTime := GetTickCount + ms;
 while (GetTickCount < TheTime) and (AForm.ModalResult = mrNone) do
 begin
   Application.ProcessMessages;
   Sleep(10);
 end;
end;


Еще: для контроля времени задержки надежнее использовать функцию Now, а не GetTickCount (у GetTickCount емкость всего лишь 49.71 дней, а дальше может глюкнуть :).



Страницы: 1 вся ветка

Текущий архив: 2008.07.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1211717736
KrendelSladkij
2008-05-25 16:15
2008.07.06
Z-order контролов


2-1212741153
VovKul
2008-06-06 12:32
2008.07.06
Разкладка клавиатуры


15-1211721164
Vipr
2008-05-25 17:12
2008.07.06
Где взять справочник населенных пунктов СНГ (можно и платно)


2-1212668598
Alex
2008-06-05 16:23
2008.07.06
Компонент savedialog


2-1212808366
mik
2008-06-07 07:12
2008.07.06
Приложение не реагирует на нажатие кнопок при работе в цикле.