Главная страница
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.037 c
1-1085834461
SergeyM
2004-05-29 16:41
2004.06.13
Integer и PlargeInteger


8-1081005582
новичок_из_сыктывкара
2004-04-03 19:19
2004.06.13
изменяя положение TTrackBar...


14-1085311405
VMcL
2004-05-23 15:23
2004.06.13
Голосование "Образование программиста?"


1-1085976765
Максим
2004-05-31 08:12
2004.06.13
Как в QuickRep.Preview сделать Zoom 100%?


3-1085042079
starik30
2004-05-20 12:34
2004.06.13
TpFIBQuery+TThread