Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

таймер и процедура   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1189756196
kostyas
2007-09-14 11:49
2007.10.14
Invalid floating point operation


3-1181203458
ina65
2007-06-07 12:04
2007.10.14
базы данных


2-1189951828
Serega99
2007-09-16 18:10
2007.10.14
sleep( )


3-1181237949
AlexDav
2007-06-07 21:39
2007.10.14
Из Access в InterBase


2-1189868932
Tonich
2007-09-15 19:08
2007.10.14
Сервис