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