unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    Timer1: TTimer;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  n:integer;
implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); //数学运算
var i:integer;
d:integer;
begin    
d:=50;
n:=1;
timer1.Enabled:=true;
for i:=1 to 90000000 do  begin
d:=d*2;
d:=trunc(d/2);  end;
timer1.enabled:=false;
edit1.text:=floattostr(d);
edit2.text:=inttostr(n);   //显示所用时间end;procedure TForm1.Button2Click(Sender: TObject);  //位运算
var i:integer;
d:integer;
begin
d:=50;
n:=1;
timer1.Enabled:=true;
for i:=1 to 90000000 do  begin
d:=(d shl 1);
d:=(d shr 1);  end;
timer1.enabled:=false;
edit1.text:=inttostr(d);
edit2.text:=inttostr(n);   //显示所用时间
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text:='';
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(n);
edit2.text:=inttostr(n);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled:=false;
end;end.
我是在试验 位运算比数学运算快多少
但是为何edit2.text:=inttostr(n);   //显示所用时间 的最终结果总是1呢?
我把timer1的Inteval改为20、200等结果都是1
这是怎么回事呢,谢谢!

解决方案 »

  1.   

    timer受其他操作的影响比较大,计算时间很不准确,还有有的说法是对于inteval是有极限的,到一个程度比如100在小也没有效果了。用gettickcount好一些
      

  2.   

    计算这么精确的时间,用timer显然是行不通的procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    d:integer;
    begin
    edit1.text:=FormatDateTime('yyyymmddhhmmsszzz',now);
    for i:=1 to 90000000 do  begin
    d:=d*2;
    d:=trunc(d/2);  end;
    edit2.text:=FormatDateTime('yyyymmddhhmmsszzz',now);
    end;
      

  3.   

    请问bluekitty(可爱猪猪) 
    gettickcount怎么使用?
      

  4.   

    找个没人看见的地方偷偷试下自己的新title