Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.024 c
1-1085749601
Иван Второй
2004-05-28 17:06
2004.06.13
Транспонировать массив из бит.


14-1085777995
miwa
2004-05-29 00:59
2004.06.13
Robert Miles - Children


8-1081155154
Erik
2004-04-05 12:52
2004.06.13
Помогите правильно отобразить иконку из ImageList!


1-1085844306
DarkSet
2004-05-29 19:25
2004.06.13
String to PAnsiChar


1-1085991622
Igor
2004-05-31 12:20
2004.06.13
DBRadioGroup