以前都是用来定时触发事件。
不知道能否实现如下功能:
点击button1时,计时器打开;
再次点击button1时,计时器关闭,并把两次点击间的时间间隔显示在Edit1中(以微秒为单位)
如果不行的话,是不是有这种功能的组件?
不知道能否实现如下功能:
点击button1时,计时器打开;
再次点击button1时,计时器关闭,并把两次点击间的时间间隔显示在Edit1中(以微秒为单位)
如果不行的话,是不是有这种功能的组件?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
iStart: Cardinal;
iEnd: Cardinal;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
iStart := GetTickCount;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
iEnd := GetTickCount;
ShowMessage(IntToStr(iEnd - iStart) + 'ms');
end;end.
procedure TForm1.Button1Click(Sender: TObject);
begin
if not timer1.enable then
i:=0;
timer1.enabled=not tabler1.enable;
edit1.text=intotst(I)
end;timer:
i:=i+1
QueryPerformanceCounter
QueryPerformanceFreqeuency;
或者RDTSC指令;
微秒级对windows来说太高了
procedure TFunc.DelayTime(MSecs:LongInt);
var FirstTickCount,Now:LongInt;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages;
Now:=GetTickCount;
until (Now-FirstTickCount>=MSecs) or (Now<FirstTickCount);
end;
C下面的一个库有一个_TIME
不知道DELPHI下有没有..
QueryPerformanceFreqeuency;
吧
timer不行.
nTime := GetTickCount(); //nTime为全局DWORD
你程序段执行时间,即:GetTickCount()-nTime
用它来测试哪段程序的高效性,很不错的。
看看它们分别的执行时间,呵呵