下面是毫秒级控件的代码,可惜我一点也看不懂。
大家能帮忙说说思路吗,我想用.NET写个。
unit mwFastTime;interfaceuses
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.
大家能帮忙说说思路吗,我想用.NET写个。
unit mwFastTime;interfaceuses
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.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货