请教个关于计时的问题

ufo20020427 2005-09-26 11:53:42
unit Unit1;

interface

uses
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
这是怎么回事呢,谢谢!
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellolongbin 2005-09-27
  • 打赏
  • 举报
回复
找个没人看见的地方偷偷试下自己的新title
hellolongbin 2005-09-26
  • 打赏
  • 举报
回复
计算这么精确的时间,用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;
  • 打赏
  • 举报
回复
timer受其他操作的影响比较大,计算时间很不准确,还有有的说法是对于inteval是有极限的,到一个程度比如100在小也没有效果了。用gettickcount好一些
ufo20020427 2005-09-26
  • 打赏
  • 举报
回复
谢谢大家
ufo20020427 2005-09-26
  • 打赏
  • 举报
回复
请问bluekitty(可爱猪猪)
gettickcount怎么使用?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧