Форум: "Начинающим";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];
ВнизЗадержка Найти похожие ветки
← →
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;
Не понятноЮ правда, кде может понадовится такая «задержка».
← →
ЮЮ © (2008-06-06 05:53) [2]> Не понятноЮ правда, кде может понадовится такая «задержка».
сорри, за акцент :)
Не понятно, правда, где может понадобиться такая «задержка»
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.076 c