{
Имя файла: HRTimer.PAS V1.00
Создан: Апр 17 1997, 06:40, автор John Mertus
Обновлен #6: Окт 12 1997, 10:56 John Mertus
Оболочка для таймера высокой точности при создании приложений под
Win95/WinNT
Var
HRT : THRTimer
HRT := THRTimer.Create;
HRT.StartTimer; Сброс таймера в ноль
HRT.ReadTimer; Возвращает отсчитанное время в миллисекундах
начиная со времени старта
HRT.Free;
Список изменений
Версия 1.00 - Первый выпуск
}{-----------------Модуль HRTimer-------------------John Mertus Апрель 97---}unit HRTimer;
{-------------------Объявления-------------------------------}interfaceuses Windows;
type
THRTimer = class(TObject)
constructor Create;
function StartTimer: Boolean;
function ReadTimer: Double;
private
StartTime: Double;
ClockRate: Double;
public
Exists: Boolean;
end;
{--------------------------Реализация-----------------------------------}implementation{------------------Create-------------------------John Mertus----Мар 97-}constructor THRTimer.Create;
{ Получаем точное системное время и сохраняем его для дальнейшего }{ использования. }{ }{***********************************************************************}var
QW: TLargeInteger;
begininherited Create;
Exists := QueryPerformanceFrequency(QW);
ClockRate := QW.QuadPart;
end;
{------------------StartTimer---------------------John Mertus----Мар 97-}function THRTimer.StartTimer: Boolean;
{ Получаем точное системное время и сохраняем его для дальнейшего }{ использования. }{ }{***********************************************************************}var
QW: TLargeInteger;
begin
Result := QueryPerformanceCounter(QW);
StartTime := QW.QuadPart;
end;
{-------------------ReadTimer---------------------John Mertus----Мар 97---}function THRTimer.ReadTimer: Double;
{ Получаем точное системное время и сохраняем его для дальнейшего }{ использования. }{ }{***********************************************************************}var
ET: TLargeInteger;
begin
QueryPerformanceCounter(ET);
Result := 1000.0 * (ET.QuadPart - StartTime) / ClockRate;
end;
end.
Программирование на языке Delphi: реализация высокоразрешительного таймера (HRTimer) для платформ Windows 95/WinNT.
Класс HRTimer предоставляет методы для запуска и остановки таймера, чтения времени, прошедшего с момента запуска таймера, в миллисекундах, а также освобождения ресурсов таймера. Таймер использует API QueryPerformanceFrequency и QueryPerformanceCounter для получения точной информации о времени от системы.
Содержание кода:
Интерфейс
Определяет интерфейс класса HRTimer, включая методы создания, запуска, чтения и освобождения ресурсов таймера.
Использует модуль Windows для доступа к функциям, специфичным для Windows.
Implementation
Конструктор Create инициализирует таймер, вызывая QueryPerformanceFrequency для получения частоты системного часов и хранит ее в поле ClockRate. Также устанавливает флаг Exists, указывающий, что таймер создан.
Метод StartTimer вызывает QueryPerformanceCounter для получения текущего времени системы и хранит его в поле StartTime, которое отмечает начало таймера.
Метод ReadTimer вычисляет время, прошедшее с момента запуска таймера, путем вычитания начала таймера из текущего времени системы, умножения результата на 1000 (для преобразования секунд в миллисекунды) и деления на частоту часов.
Замечания
Код использует тип TLargeInteger для обработки больших целых чисел, что необходимо для работы с высокоразрешительной информацией о времени.
Разрешение таймера ограничено частотой системного часа, которая может быть высокой на современных системах. На старых системах таймер может не иметь достаточной разрешающей способности.
Альтернативное решение
Хотя данный код обеспечивает простой и эффективный способ реализации высокоразрешительного таймера, он может не подходить для всех ситуаций.
Если вам нужно более высокое разрешение времени, вы можете потребоваться другие API или библиотеки, которые предоставляют более точную информацию о времени.
Если ваше приложение требует очень низкой задержки или реального времени, вам может потребоваться использование специализированных библиотек или аппаратного обеспечения для тайминга.
High-precision timer для создания приложений под Windows, обеспечивает точное измерение времени с высокой точностью в миллисекундах.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.