Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Насчет Таймера.... [D5, Win95/98, Win2k]


TankMan ©   (2002-11-09 16:05:00) 

Я вот не пойму, ставлю интервал 1000, но он что не равен 1 секунде? Когда интервал 1000 таймер срабатывает не через 1 секунду, а через 0.9 сек. может быть, или так,но уж точно не через 1 сек. а в чем дело? может так и должно быть? или скажите тогда в чем проблема, мне нужно, чтобы таймер срабатывал ровно через каждую секунду, а не 0.9... что делать?


Николай Быков   (2002-11-10 02:56:00) [1]

Я когда делал часы, то просто синхронизировал свой таймер с часами Windows постоянно:

var tine:_SYSTEMTIME;
....................
getsystemtime(time);
timer1.Interval:=1000-time.wMilliseconds;
....................

Тогда у меня таймер срабатывал каждую секунду


Beglec   (2002-11-10 02:21:00) [2]

Компоненто с точным таймером море в кладовке.

А то что Timer в Delphi был не точный, дык это было с Delphi 1 и по сей день.
А вообще чисто теоритически, на компьютере не может быть идеально точного таймера.
Всегда может возникнуть процесс который займет 100% времени и твоему приложению может не достаться процессорное время в нужный момент.

Так что лучше менять алгоритм программы, с учетом погрешности таймера.

В данный момент все свои проги решаю именно таким способом.
Так что +1 -1 секунда для меня не страшно.


ULTRIX   (2002-11-10 00:59:00) [3]

2TankMan если уж на то пошло, то используй таймер для обращения системного времени, т.к. по твоим словам "часики в виндах идут вроде правильно". Проблема отпадает сама собой.

Далее - каким образом выводишь в лайбел время? Может используется функция целого числа и т.д...


TankMan   (2002-11-10 00:11:00) [4]

Спосибо... ну ошибся я значит с "медленее или быстрее" но не суть в этом, я спрашивал, как сделать более точный. Ответили. Спасибо за внимание.


З.Ы.
>>Ihor Osov"yak
Например ты тоже ошибаешься, о 0.8 и речи не шло... было о 0.9 посмотри внимательнее :)


Hirara   (2002-11-10 00:08:00) [5]

я где то читал что таймер в делфе равен не 1 Мсек, а чото типа 0.8, если очень нужно могу книженцию порыть, вроде там видел, но только она про 5 делфю


Ihor Osov'yak   (2002-11-09 23:47:00) [6]

2 TankMan © (09.11.02 23:38)
см TTCustomDelphiMaster © (09.11.02 16:36) - он прав.

А Вы, молодой человек, постарайтесь понять, что 30 разделить на 28 несколько больше единицы. Это по поводу ваших 0.8 сек

А про критерий "чуть" - забудте. Если чего - то кажется - то можно перекристится. Иногда помагает.

Если нужен более точній отсчет - юзайте мультимедиатаймер. Но все же имейте ввиду, что виндовс - не система реального времени.


TankMan   (2002-11-09 23:38:00) [7]

Значит никто эту проблему и не решал?... ясно...


Alex44   (2002-11-09 22:30:00) [8]

Ya slyshal, chto multimedia timer"y tochnee, no sam tolkom nichego ne znayu. S drugoj stotony, zachem Vam eto nuzhno? V smysle, zachem samomu vremya schitat"? Prosto vyvodite po timer"u libo systemnoe vremya, libo chto-nibud" svyazannoe s TickCount. Togda vyvedennuj resultatbudet tochnym, a uzh budet on vyvodit"sya chut" chashe ili chut" rezhe, ne tak uzh i vazhno.


TankMan   (2002-11-09 22:17:00) [9]

Я определил? Он в некоторых случаях больше в некоторых меньше 1 сек. - Я поставил выводить время на лейбле, интервал таймера 1000 и запускал прожку, открыв часы понаблюдал - стрелки часов в виндах нормально идут.. я прав? вот и секунды менялись в программке чуть раньше, чем на часах, и с каждой секундой, часы в программке сбивались... вобщем не в этом вопрос, как я определил, но в том, что это однозначно - спора нет. ААА... вот... я ставлю таймер с интервалом 1000 повторяю 30 раз, и когда он повторит ~28 раз на часах проходит 30 сек.
А как сделать так, чтобы ровно каждую секунду он срабатывал или можть таймер другой где взять?


The_Vizit0r!   (2002-11-09 16:52:00) [10]

В зависимости от загруженности систему интервал 1000 может был от 0.8 до 10 сек.


TTCustomDelphiMaster   (2002-11-09 16:36:00) [11]

Позже может, но раньше не должен срабатывать.


iNew   (2002-11-09 16:09:00) [12]

А как ты определил, что через 0.9 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо