Главная страница
    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.47 MB
Время: 0.037 c
6-1082557140
Lena19
2004-04-21 18:19
2004.06.13
что делать если не успеваеш считывать буфер


3-1084955594
GIL
2004-05-19 12:33
2004.06.13
Зараз пара запросов - не работают.


1-1085991974
Ertong
2004-05-31 12:26
2004.06.13
Popup in Popup


14-1085402763
sucer
2004-05-24 16:46
2004.06.13
Посмотрите что делает эта гадина INTEL


6-1082539186
Остап
2004-04-21 13:19
2004.06.13
Proxy in IE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский