欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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.

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 可以计算到<<毫秒级>>的控件_delphi教程
分享到: 更多 (0)