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

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航