18.4.1. TTimer - таймер
Компонент TTimer (таймер) служит для отсчета интервалов реального времени. Его свойство interval определяет интервал времени в миллисекундах, который должен пройти от включения таймера до наступления события onTimer. Таймер включается при установке значения True в его свойство Enabled. Раз включенный таймер все время будет возбуждать события onTimer до тех пор, пока его свойство Enabled не примет значения False.
Следует учесть, что в силу специфики реализации аппаратного таймера персонального IBM-совместимого компьютера минимальный реально достижимый интервал отсчета времени не может быть меньше 55 миллисекунд (этот интервал называется тиком). Более того, любой интервал времени, отсчитываемый с помощью таймера, всегда кратен 55 миллисекундам. Чтобы убедиться в этом, проделайте следующий эксперимент, в котором подсчитывается среднее время между двумя срабатываниями таймера:
var
BegTime: TDateTime;
procedure TForm1.Timer1Timer(Sender: TObject);
var
h, m, s, ms: Word;// Переменные для декодирования времени
const
MaxTick = 10; // Количество интервалов таймера
begin
if Tag = 0 then
BegTime := Time; // Запоминаем начальное время
Tag := Tag + 1; // Наращиваем счетчик тиков
if Tag = MaxTick then
begin
Timeri.Enabled := False; // Выключаем таймер
// Декодируем значение 1 тика
DecodeTime((Time-BegTime)/MaxTick, h, m, s, ms);
// Выводим результат в заголовке окна:
Caption := IntToStr(s) + ' s ' + IntToStr(ms) + ' ms'
end
end;
Обратите внимание на определение глобальной переменной BegTime в области видимости процедуры TimerlTimer. Необходимость нескольких (MaxTick) срабатываний для точного усреднения результата связана с тем, что системные часы также обновляются каждые 55 мс. После запуска программы в заголовке окна вы увидите строку
О s 55 ms ,
в которой указывается, сколько реального времени разделяет два соседних события OnTimer. Этот результат повторится для любых значений константы MaxTick. Если вы установите Interval таймера в диапазоне от 56 до 110 миллисекунд, в заголовке будет указано 110 ms И Т. Д.