unit mwFastTime;
interface
uses SysUtils, Windows, Classes;
type TmwFastTime = class(TComponent) private c, n1, n2: TLargeInteger; function GetElapsedTime: ShortString; function GetElapsed: Extended; protected public constructor Create(AOwner: TComponent); override; destructor Destroy; override; Property Elapsed: Extended read GetElapsed; Property ElapsedTime: ShortString read GetElapsedTime; Procedure Start; Procedure Stop; published Property Name; Property Tag; end;
procedure Register;
implementation
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
procedure Register; begin RegisterComponents(''''mw'''', [TmwFastTime]); end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
constructor TmwFastTime.Create(AOwner: TComponent); begin inherited Create(AOwner); QueryPerformanceFrequency(c); end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
destructor TmwFastTime.Destroy; begin inherited Destroy; end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
function TmwFastTime.GetElapsed: Extended; begin {$IFDEF VER120} Result:= (_LARGE_INTEGER(n2).QuadPart - _LARGE_INTEGER(n1).QuadPart) / _LARGE_INTEGER(c).QuadPart; {$ELSE} Result:= (n2.QuadPart - n1.QuadPart) / c.QuadPart; {$ENDIF} end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
function TmwFastTime.GetElapsedTime: ShortString; begin {$IFDEF VER120} Result := format(''''Seconds: %g'''', [GetElapsed]); {$ELSE} Result := format(''''Seconds: %g'''', [GetElapsed]); {$ENDIF} end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
Procedure TmwFastTime.Start; begin QueryPerformanceCounter(n1); end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
Procedure TmwFastTime.Stop; begin QueryPerformanceCounter(n2); end;
end.
没有相关教程
|