![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цикл по времени
Santik © (2006-07-07 16:03:00)Подскажите, как создать цикл по времени.
Т.е. мне нужно каждую секунду выполнять определенный блок операций.
SerJaNT (2006-07-09 02:06:00) [1]
> Получится что через каждый интервал времени будут выполняться
> действия
> если проц успеет
Дык, а зачем на самом событии Timer устанавливать интервал?
Homo Sapiens (2006-07-08 17:56:00) [2]
> И что получится?
Получится что через каждый интервал времени будут выполняться действия
если проц успеет
Ketmar (2006-07-08 15:06:00) [3]>begin...end © (08.07.06 14:40) [11]
ну и фиг с ним. судя по "страхованию", это не самое страшное в коде. %-)
begin...end (2006-07-08 14:40:00) [4]> StriderMan © (07.07.06 17:28) [6]
Страховка -- оно, конечно, хорошо, но каждый раз убивается и пересоздаётся таймер...
SerJaNT (2006-07-08 13:38:00) [5]
> Homo Sapiens © (07.07.06 17:03) [5]
> procedure Timer1Timer...
> begin
> timer1.interval:=... //интервал времени
> //////////
> Здесь идут выполняемые действия
> ////////////
> end;
И что получится?
Ketmar (2006-07-08 13:18:00) [6]>Desdechado © (07.07.06 17:03) [4]
всё равно событие обработается не раньше окончания обработчика, если не вызывать GetMessage()/DispatchMessage() или Application.ProcessMessages().
parovoZZ (2006-07-07 22:07:00) [7]Ну если WinApi и цикл, то GetTickCount.
Desdechado (2006-07-07 17:51:00) [8]> это собственно значит что надо проверять реже
Это значит другое. Это значит, что при наличии сильнозагружающих систему программ возможно неуспевание других программ. И предсказать период для таймера тяжеловато.
StriderMan (2006-07-07 17:28:00) [9]
> Desdechado © (07.07.06 17:03) [4]
> А если за секунду этот блок операций не уложится, то сработает
> еще одно событие начало блока и т.п.
> Итог, я думаю, понятен.
это собственно значит что надо проверять реже :)
а вообще я для страховки так делаю
procedure Timer1Timer...
begin
timer1.Enabled := false
...//здесь все делается
Timer1.Enabled := true;
end;
но так конечно интервал выполнятся не будет
Desdechado (2006-07-07 17:03:00) [10]А если за секунду этот блок операций не уложится, то сработает еще одно событие начало блока и т.п.
Итог, я думаю, понятен.
Homo Sapiens (2006-07-07 17:03:00) [11]procedure Timer1Timer...
begin
timer1.interval:=... //интервал времени
//////////
Здесь идут выполняемые действия
////////////
end;
Джо (2006-07-07 16:53:00) [12]> [2] Jeer © (07.07.06 16:52)
Ветка первоначально в WinAPI была :)
Jeer (2006-07-07 16:52:00) [13]или компонент TTimer
Джо (2006-07-07 16:07:00) [14]SetTimer