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



Автор: 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.


Далее: Высокоточный таймер 2 »»