Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Высокоточный таймер

Delphi , Компоненты и Классы , TTimer

Высокоточный таймер

Автор: John Mertus


{

Имя файла: 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;

{-------------------Объявления-------------------------------}

interface

uses 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;

begin

  inherited 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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TTimer ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:08:47/0.005856990814209/1