Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1190529112
zavialov
2007-09-23 10:31
2007.10.14
Не увеличивать счетчик ссылок - создать отдельный экземпляр.


15-1189970382
ProgRAMmer Dimonych
2007-09-16 23:19
2007.10.14
Посоветуйте, что делать


3-1181285199
ssa
2007-06-08 10:46
2007.10.14
Узнать, что dataset находится в режиме редактирования


2-1190047625
Johnnnn
2007-09-17 20:47
2007.10.14
TidPop3


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский