Войти
ПрограммированиеПодсказкиОбщее

Delphi: Точный таймер (Win API)

Автор:

Всем привет! Выкладываю код точного таймера. Время измеряется в секундах и миллисекундах. Код для Delphi  (серия XE). Вставки на ассемблере сделаны для 64-х битной версии и избежания лишнего чтения/записи из стека из-за процедурных фреймов.

+ Показать

Класс не явялется наследником TObject, поэтому создавать экземпляры не требуется.
Использовать очень просто:

// Объявим переменную
var
  AuxTimer: TZTimer;

// Инициализировать можно 1 раз, например при создании формы.
// У меня это делается в секции Initialization модуля ZTimer.
AuxTimer.Init;

AuxTimer.Start;
// Рисуем ...
AuxTimer.Stop;

// Время кадра
Writeln('Время кадра (1): ' + FloatToStr(AuxTimer.TimeInSec, 4, False) + ' сек.'); 
Writeln('Время кадра (2): ' + FloatToStr(AuxTimer.TimeInMSec, 1, False)+ ' мс.'); 

// Вывод
Время кадра (1): 0.0002 сек.
Время кадра (2): 0.2 мс.

Надеюсь у фанатов C++ не будет сложностей с переводом кода.
По крайней мере у меня наоборот не возникает.

#Delphi

24 апреля 2020

Комментарии [87]