Советы по Delphi

         

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


    {
Имя файла: 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.
[000265]



Содержание раздела