Таймер/секундомер
Модератор: Модераторы
Таймер/секундомер
Как юзать сабж в FPC?
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
вопрос в разделе Free Pascal Compiler там нет таймера.
это вообще никак.
ты можешь узнать сколько времени
запомнить его в переменую, а потом сверятся с ней и получать разницу.
задережку делать через
если делать паролельно, то изучай потоки.
"Как запустить таймер и узнать значения его в момент времени. Ну или тоже про секундомер. Короче, интерфейс функций работы с таймером/секундомером"
это вообще никак.
ты можешь узнать сколько времени
Код: Выделить всё
nowзапомнить его в переменую, а потом сверятся с ней и получать разницу.
задережку делать через
Код: Выделить всё
sleep(1000)если делать паролельно, то изучай потоки.
вопрос в разделе Free Pascal Compiler там нет таймера.
Цитата:
"Как запустить таймер и узнать значения его в момент времени. Ну или тоже про секундомер. Короче, интерфейс функций работы с таймером/секундомером"
это вообще никак.
ты можешь узнать сколько времени
Код:
now
запомнить его в переменую, а потом сверятся с ней и получать разницу.
задережку делать через
Код:
sleep(1000)
Я так уже делал, даже свой модуль сделал... Блин, неужеле у компьютера нет встроенного таймера????
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
- Alexander
- энтузиаст
- Сообщения: 888
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
D_I_M_A писал(а):Я так уже делал, даже свой модуль сделал... Блин,
неужеле у компьютера нет встроенного таймера????
В компьютере то он есть, но многозадачная ось не даст тебе
им пользоваться напрямую. Программ то ведь много, не только твоя.
Так что функции работы с промежутками времени предоставляет сама
ось. Это уже не ДОС. Кстати, какая у тебя ОС ? И что за задачу
решаешь ?
Функций для этого много и они разные. В одном случае одни, в другом
другие. Некоторые (now) сделаны в FP кроссплатформенными,
некоторые специфичны для ОС. Например, в Вин есть апи функция
GetTickCount, а в Линуксе это совсем другая функция, действие её то
же.
Ещё есть GetLocalTime, GetSystemTime, Sleep,...
Есть таймеры, реализованные через сообщения. ИТД.
Немножко добавлю от себя. GetTickCount (как и TTimer в Дельфи, как и sleep, GetSystemTime)- штука довольно грубая. Он отсчитывает промежутки времени с тиком в 1/18.2 секунды, кажется (т.е., грубо говоря, где-то по 50 мс). Для большинства прикладных задач этого хватает за глаза, а вот если нужно точнее- надо брать справочник по ассемблеру и копать в сторону MMX. Там, кажется, свой таймер, более точный.
Вобщем, если Вы вдруг АСУ пишете- такой таймер не поможет.
Вобщем, если Вы вдруг АСУ пишете- такой таймер не поможет.
Хм... Ну, если в ДОСе работать только с одной программой- конечно, можно перепрограммировать таймер. А если таких программ несколько?
А частота разве не может меняться? Как-то не интересовался этим вопросом. Но во многих утилитах видел, что она "плавает"...
Я в свое время так и не нашел выхода из этой ситуации- просто использовал таймер и микропроцессор на АЦП, если до него можно было достучаться
А в ММХ есть мультимедиа-таймер, который поточнее
А частота разве не может меняться? Как-то не интересовался этим вопросом. Но во многих утилитах видел, что она "плавает"...
Я в свое время так и не нашел выхода из этой ситуации- просто использовал таймер и микропроцессор на АЦП, если до него можно было достучаться
А в ММХ есть мультимедиа-таймер, который поточнее
- bw
- постоялец
- Сообщения: 359
- Зарегистрирован: 01.12.2005 10:36:23
- Откуда: Усть-Илимск
- Контактная информация:
e-moe, rdtsc, говоришь. А что, если процессор работает не с постоянной частотой? Тогда не получится ориентироваться на rdtsc при расчете времени. В винде есть функции для точной работы со временем (QueryPerformanceFrequency и QueryPerformanceCounter), но я никогда не пользовался. Кажется ничего лучше в этой операционке нет, разве что на уровне ядря есть какие фичи.
..bw
..bw
