![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
таймер и процедура
delphiForever © (2007-09-13 21:19:00)если взять таймер который тикает 100мс и выполняет процедуру PROC_1 которая выполняется припустим 500мс. Что произойдет если за 500 мс таймер тикнет 5 раз - 5 раз будет выполнена процедура PROC_1.
вопрос: нужно избегать подобных ситуаций или PROC_1 выполнится только раз?
Palladin (2007-09-13 22:49:00) [1]
> While True Do
> probalyEndOfIntervalCounter:=1;
> Begin
млин.. хоть на башорг отправляй... переместить друг с другом две строчки
Palladin (2007-09-13 22:47:00) [2]млин... короче до фига чего забыл...
Var
probalyEndOfIntervalCounter:Integer;
While True Do
probalyEndOfIntervalCounter:=1;
Begin
Sleep(10);
Application.ProcessMessages;
Inc(probalyEndOfIntervalCounter);
If probalyEndOfIntervalCounter=TimerInterval div 10Then
Begin
DoMyprocedure;
probalyEndOfIntervalCounter:=1;
End;
If (ThisIsTheEndOfWorld) or (Application.Terminated) The nBreak;
End;
и вообще все это ерунда...
S@shka (2007-09-13 22:45:00) [3]По этой идеологии и VCL не надо использовать - кнопку самому мона нарисовать.
Palladin (2007-09-13 22:44:00) [4]с хрена ли? ))
Var
probalyEndOfIntervalCounter:Integer;
While True Do
probalyEndOfIntervalCounter:=1;
Begin
Sleep(100);
Inc(probalyEndOfIntervalCounter);
If probalyEndOfIntervalCounter=TimerInterval div 1000 Then
Begin
DoMyprocedure;
probalyEndOfIntervalCounter:=1;
End;
If (ThisIsTheEndOfWorld) or (Application.Terminated) The Break;
End;
Palladin (2007-09-13 22:44:00) [5]
> {RASkov} © (13.09.07 22:42) [9]
ах.. тыть... его я и забыл... вставить после sleep(100) :)
{RASkov} (2007-09-13 22:42:00) [6]> [8] S@shka © (13.09.07 22:40)
> И висим на sleep ? ))
А Sleep тут зачем? В качестве слипа пойдет DoMyprocedure; :)
А вот Application.ProcessMessage не помешал бы....
S@shka (2007-09-13 22:40:00) [7]
> тогда какой смысл в таймере?
> While True Do
- И что?
While True Do
begin
DoMyprocedure;
sleep (TimerInterval);
end;
И висим на sleep ? ))
Palladin (2007-09-13 22:37:00) [8]тогда какой смысл в таймере?
While True Do
{RASkov} (2007-09-13 22:37:00) [9]> [5] S@shka © (13.09.07 22:29)
> Смысл в таймере - повторно запустить на выполнение КОД
Угу... смысл велик :)
А кроме как таймера, больше никак....
Хотя в случае [3] - между тактами выполнения процедуры, которая вызывается по таймеру, имеется промежуток времени, равный интервалу таймера, тогда фик знает.... может и есть смысл....:)
S@shka (2007-09-13 22:29:00) [10]
> {RASkov} © (13.09.07 22:27) [4]
> > [3] Вася Правильный (13.09.07 22:24)
>
> А смысл тогда в этом таймере ? :)
Смысл в таймере - повторно запустить на выполнение КОД
{RASkov} (2007-09-13 22:27:00) [11]> [3] Вася Правильный (13.09.07 22:24)
А смысл тогда в этом таймере ? :)
Вася Правильный (2007-09-13 22:24:00) [12]останавливай таймер перед вызовом и запускай снова после окончания процедуры
иначе поест все ресурсы
delphiForever (2007-09-13 21:30:00) [13]
> Anatoly Podgoretsky © (13.09.07 21:28) [1]
> > delphiForever (13.09.2007 21:19:00) [0]
>
> А ты проверь
думал в принцыпе, но поленился думаю спрошу
Anatoly Podgoretsky (2007-09-13 21:28:00) [14]> delphiForever (13.09.2007 21:19:00) [0]
А ты проверь