Главная страница
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.018 c
15-1211646050
Cyrax
2008-05-24 20:20
2008.07.06
Excel: хитрая формула...


11-1190069573
harmly
2007-09-18 02:52
2008.07.06
koledb - возврат значения из поля numeric


2-1212649048
Андрей Пл
2008-06-05 10:57
2008.07.06
где хранить настройки


15-1211466716
TIF
2008-05-22 18:31
2008.07.06
Посоветуйте, плз, бесплатный хостинг (с PHP)


2-1212568980
lead-in
2008-06-04 12:43
2008.07.06
indy, компонент IdFTP