WEB开发网
开发学院软件开发Delphi 可以计算到<<毫秒级>>的控件 阅读

可以计算到<<毫秒级>>的控件

 2006-02-04 13:30:51 来源:WEB开发网   
核心提示:unit mwFastTime;interfaceuses SysUtils, Windows, Classes;type TmwFastTime = class(TComponent) PRivate c, n1, n2: TLargeInteger; function GetElapsedTime: Sh

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.

Tags:可以 计算 lt

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接