Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизТаймер Найти похожие ветки
← →
Дмитрий © (2004-05-29 02:00) [0]1) нужно написать таймер с точностью до милисекунд. 2) какое значение задержки у компонента "таймер" соответствует 1 с.
Спасибо.
← →
lyeh (2004-05-29 02:06) [1]Круто :)
Задержка у таймеров измеряется в милисекундах, сколько их в секунде? Точный таймер можно сделать посредством thread
← →
Thinker © (2004-05-29 03:12) [2]1)Можно сделать такой :)
2)1000
← →
Германн © (2004-05-29 03:16) [3]Написать таймер с точностью до миллисекунд - слишком много хочешь.
2 lyeh (29.05.04 02:06) [1]
> Точный таймер можно сделать посредством thread
Увы. Не всегда можно. И очень редко можно.
← →
lyeh (2004-05-29 03:24) [4]Более точный можно написать в OnIdle или в теле какого-нибудь лупа, но тогда он будет загружать процессор на все 100% независимо от "веса" зацикленного кода
← →
Thinker © (2004-05-29 05:33) [5]Напиши подробнее, что за таймер ты хочешь сделать! Это часы или секундомер....?! Только тогда можно будет дать правильный ответ!
← →
Дмитрий © (2004-05-29 05:36) [6]
> Thinker © (29.05.04 05:33) [5]
> Напиши подробнее, что за таймер ты хочешь сделать! Это часы
> или секундомер....?! Только тогда можно будет дать правильный
> ответ!
Секундомер.
← →
Thinker © (2004-05-30 02:08) [7]Я делал такой секундомер.
> lyeh (29.05.04 03:24) [4]
> в теле какого-нибудь лупа, но тогда он будет загружать
> процессор на все 100%
> независимо от "веса" зацикленного кода
Я так делал. Попробую написать код:
var
Stop: Boolean; // глобальная или локальная...зависит от кода
S: TSystemTime;
begin
repeat
DateTimeToSystemTime(Time, S);
Label1.Caption := TimeToStr(Time) + ":"
+ IntToStr(S.wMilliseconds)
until Stop
end;
На событие OnClose нужно будет Stop := True
Я так прямо писал из нет кафе...так, что ошибки будут наверно)))
← →
Германн © (2004-05-30 02:26) [8]2 Thinker © (30.05.04 02:08) [7]
Даже если все сидит в цикле, нет никакой возможности получить точное значение миллисекунд в точно заданный момент времени!.
Многозадачность Windows не позволит.
1. Цикл repeat until прервется передачей процессорного времени другому процессу.
2. Параметр Stop изменит свое значение при таком коде только в многопоточной программе, да и к тому же (по смыслу) должен будет ждать обработки соответствующего сообщения. А когда все это случится - даже богу не известно.
← →
renat-me © (2004-05-30 11:04) [9]А у DelphiX DXTimer вреде что-то ближе к реальности!!!
← →
KilkennyCat © (2004-05-30 11:42) [10]Используйте GetTickCount (если не ошибаюсь в правильности). Позволяет точно отслеживать количество миллисекунд в промежутке между вызовами этой функции. Конечно, не получится вызывать каждую миллисекунду, но зато можно знать, сколько прошло. Для секундомера - идеально.
← →
SammIk © (2004-05-30 12:21) [11]db 0fh,31h;Команда получает количество тиков процессора.
В eax младшая часть учетверенного слова, в edx старшая.(точно не помню)
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.034 c