Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Таймер   Найти похожие ветки 

 
Дмитрий ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
1-1085921536
ilnarab
2004-05-30 16:52
2004.06.13
Функция для выбора файла


1-1086150441
ZHK
2004-06-02 08:27
2004.06.13
ReadCоmponent и WriteComponent


9-1077025452
Delphi_X_akep
2004-02-17 16:44
2004.06.13
DelphiX, TPictureCollectionItem, TPicture и TCanvas


1-1085831723
ltexcimer
2004-05-29 15:55
2004.06.13
case и char


14-1085206385
AlexG
2004-05-22 10:13
2004.06.13
Intel и AMD.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский