CodeNet / Языки программирования / Delphi & Kylix / FAQ - Часто задаваемые вопросы / Borland Delphi VCL FAQ
TTimer работает не достаточно точно. Как получить более высокую точность?
Вопрос:
TTimer работает не достаточно точно. Как получить более высокую точность?
Ответ:
Таймер Windows не был создан с целью получения сверхточного хронометра. :-( Другими словами, когда Вы устанавливаете таймер на срабатывания каждые 1000 миллисекунд, он может срабатывать через интервал несколько больший чем 1000 миллисекунд.
Значения меньше 55 миллисекунд никогда не будут срабатывать вовремя в Windows, поскольку это минимальная точность таймера. Можно проверять системное время и сравнивать его со временем предыдущего события таймера чтобы повысить точность.
Оставить комментарий
Комментарии
1.
12 декабря 2005, 13:21:44
Лучше всего использовать call-back функции виндов, 100% сработка через заданный интервал, так как сработка идет от системного таймера
2.
20 мая 2005, 10:55:25
Используйте функции из библиотеки mmedia
CreateTimerQueueTimer(
PHANDLE phNewTimer,
HANDLE TimerQueue,
WAITORTIMERCALLBACK Callback,
PVOID Parameter,
DWORD DueTime,
DWORD Period,
ULONG Flags
);
точность до миллисекунд
CreateTimerQueueTimer(
PHANDLE phNewTimer,
HANDLE TimerQueue,
WAITORTIMERCALLBACK Callback,
PVOID Parameter,
DWORD DueTime,
DWORD Period,
ULONG Flags
);
точность до миллисекунд
3.
13 февраля 2005, 12:32:25
если использовать функцию Time()...
msec = Time()*24*3600*1000...
то достигается только сантисекундная точность (0.01сек)...
как же все-таки получить МИЛЛИсекунды в Windows ?....
msec = Time()*24*3600*1000...
то достигается только сантисекундная точность (0.01сек)...
как же все-таки получить МИЛЛИсекунды в Windows ?....