| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Проблемка с TTimer |
| Автор: quadro44 13.5.2008, 03:46 | ||
| Вот собственно она та проблема! Вот небольшой кодец:
Так вот. Программа считает сколько прошло времени от нажатия кнопки Старт до ее повторного нажатия, что-то типа секундомера. Реализовано с учетом сотых миллисекунд. Но отсчет сильно отстает от того времени, которое показывает тот же Виндовс. Значит, реально проходит 30 сек, а програ показывает только 19 с копеками, не может же такая быть погрешность. Что примичательно на старой моей машине, Селерон 1200 на ХР Sp2, это работает на ура и погрешность небольшая, на уровне сотых. А новой Core Quad 6600 на XP SP3 так тупит. Че за прикол. Блин... Може кто-сталкивался с такой проблемой. О gettickcout() и getsystemtime() and getlocaltime() я знаю, именно интересует в чем здесь может быть прикол. |
| Автор: pseud 13.5.2008, 09:43 | ||||||
прикола никакого нет, просто Timer у тебя не срабаытвает каждые 10 мсек. лучше при Старте заводи переменную "время старта"
а какждое срабатывание Timera отображай разницу между временем сработки и временем старта
да и таймер выставь хотя бы на 50 а лучше на 100 мс |
| Автор: ama_kid 13.5.2008, 09:54 |
| Прикол в том, что таймер (работающий через системное сооющение WM_TIMER) - это низкоприоритетное сообщение, поэтому отправляется окну только, если нет других сообщений и вообще система не занята, следовательно очень сильно зависит от внешних факторов и для точного отсчета времени непригоден. Если надо отсчитывать точные промежутки времени - лучше воcпользоваться http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx. Ну и 10 мс - это все-таки слишком... система все равно не может гарантированно отмерить отрезок меньше 50 мс (ибо не RT-система)... |