一个变量初始化的问题!(20分)

  • 主题发起人 主题发起人 vine
  • 开始时间 开始时间
V

vine

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道,delphi可以自动对变量进行初始化。
但是这不包括局部变量的呵
问题是:
我在一个Timer的timer事件里面要用一个integer变量来计数,以来统计timer
触发了几次。但,自然不能在timer事件里面初始化变量了,不初始化又会出问题的呵。
这样我该如何解决呢?在那里面声明?
 
在窗体创建时初始化
 
procedure TimerOnTimer(Sender: TObject);
const
Count: Integer = 0;
begin
Inc(Count);
...
end;
 
private
I:Integer;

在窗体ONCREATE事件初始化:
I:=0;
 
声明一个全局的INTEGER变量,全局变量系统会自动赋初值给它,INTEGER就赋0,STRING就
赋空字符串:)
 
这样的问题也问
 
把分给 LeeChange 吧!
 
LeeChange的象不可以吧,局部变量是不可以在声明的时候赋初值的

对其它的声明为全局变量是可以呵,只不过我不想这样解决,太浪费资源了吧。

我想在局部用完就释放了。

有没有什么解决方法或者是不能这样用,只能声明为全局变量?
 
用ttimer自己的tag.
procedure TimerTimer(Sender: TObject);
begin
timer1.tag := timer1.tag +1;
end;


 
dedman的方法比较好。
 
但问题当timer事件刚开始的时候

变量要初始化为0呵?
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=true;
Timer1.Tag:=0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Tag:=Timer1.Tag+1;
label1.caption:=inttostr(Timer1.Tag);
end;
 
同意LeeChange
 
谢谢小人物,觉得你的方案是可行的

不过,LeeChange的可以么?

用const 而不用var

记得在《delphi技术手册》里看到相应的。
 
查到了。、
const
Count: Integer = 0;
声明的是一个类型化常量。

声明一个常量的类型时,delphi为该常量留出内存并把它作为一个变量,可以分配一个
新的值给这个常量并保持它。在C++中这个实体被称为静态变量。

不过这是维持向后兼容性的
 
多人接受答案了。
 
后退
顶部