blob: 29e972aedc018bf3b52d5ad7d7695e65eb7d7f2f (
plain) (
tree)
|
|
unit UTime;
interface
type
TTime = class
constructor Create;
function GetTime: real;
end;
procedure CountSkipTimeSet;
procedure CountSkipTime;
procedure CountMidTime;
procedure TimeSleep(ms: real);
var
USTime: TTime;
TimeFreq: int64;
TimeNew: int64;
TimeOld: int64;
TimeSkip: real;
TimeMid: real;
TimeMidTemp: int64;
implementation
uses Windows;
constructor TTime.Create;
begin
CountSkipTimeSet;
end;
procedure CountSkipTimeSet;
begin
QueryPerformanceFrequency(TimeFreq);
QueryPerformanceCounter(TimeNew);
end;
procedure CountSkipTime;
begin
TimeOld := TimeNew;
QueryPerformanceCounter(TimeNew);
TimeSkip := (TimeNew-TimeOld)/TimeFreq;
end;
procedure CountMidTime;
begin
QueryPerformanceCounter(TimeMidTemp);
TimeMid := (TimeMidTemp-TimeNew)/TimeFreq;
end;
procedure TimeSleep(ms: real);
var
TimeStart: int64;
TimeHalf: int64;
Time: real;
Stop: boolean;
begin
QueryPerformanceCounter(TimeStart);
Stop := false;
while (not Stop) do begin
QueryPerformanceCounter(TimeHalf);
Time := 1000 * (TimeHalf-TimeStart)/TimeFreq;
if Time > ms then Stop := true;
end;
end;
function TTime.GetTime: real;
var
TimeTemp: int64;
begin
QueryPerformanceCounter(TimeTemp);
Result := TimeTemp/TimeFreq;
end;
end.
|