菜鸟提问,变量设置有何区别?(25)

  • 主题发起人 terry_zhou82
  • 开始时间
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
type TForm1 = class(TForm) private var a:integer public { Public declarations } end
var Form1: TForm1
implementation var a:integer
一个是在PRIVATE下面定义的a变量,另外一个是在implementation下面设置的a变量,用途是不是一样啊?
 
S

Supermay

Unregistered / Unconfirmed
GUEST, unregistred user!
不一样,private var a:integer 是TForm1私有的,只在TForm1实例化后才存在,并且TForm1以有不能被访问,implementation var a:integer;是本单元的变量,在本单元全局有效
 
K

kinneng

Unregistered / Unconfirmed
GUEST, unregistred user!
前一个是TForm1私有的,procedure TForm1.***的过程或者function TForm1.***的函数会优先访问,而不理会第二个的存在,而其他过程或者函数,它们则访问不了第一个a,所以只会访问第二个a。另外纠错private a:integer;没有var并加上分号才正确
 
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我的程序只有一个CLASS,一个UNIT呢?是不是就一样啊?
 
S

Supermay

Unregistered / Unconfirmed
GUEST, unregistred user!
a:integer 是TForm1私有的,只在TForm1实例化后才存在,var a:integer;是本单元的变量,在本单元全局有效
 
W

wql

Unregistered / Unconfirmed
GUEST, unregistred user!
你说_Rec=record a:integer;end;var a:integer
t:_rec;a和t.a是不一样的啊!
 
W

WilliamGui

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 一个是类里面的数据域2. 一个是普通的变量要用1,需要先实例化类,能过类的实例访问它。要用2,直接用就行了,不过,这样定义只在本单元有用。
 
B

bsense

Unregistered / Unconfirmed
GUEST, unregistred user!
type TForm1 = class(TForm) private //var a:integer a:integer
//在类实例化成为对象后才能访问,只有本类可以访问 public { Public declarations } b:integer;//在类实例化成为对象后才能访问,其他地方也可以访问 //这里的变量一般用与 showmodal 方式的窗口返回数据 //比如 openfiledialog end
//var // Form1: TForm1
//form1是一个对象变量,tform1 是类名,其他单元可以访问(不安全) //所以,一般这个地方需要删除,而放在调用者单元里面implementation var a:integer
//在下面的 程序可以访问 ,其他单元不能访问//调用者单元//假如是一个 主程序program demo;uses unit1;var form1:tform1
//主程序变量 rtn:integer;begin form1 := tform1.create(application)
form1.showmodal
rtn := form1.b;end;只有一个单元也不一样type TForm1 = class(TForm) private a:integer public { Public declarations } end
var Form1: TForm1
//位置1 implementation var a:integer
//位置2function test1()var t:integer;begin t := a
//这里可以访问 位置2 的单元变量 result := t;endfunction tform1.dotest2()var tttt :integer;begin tttt := self.a
//访问 private 变量 ,self 是本类 tttt := a
// 访问 单元 变量 form1 := nil
//访问 位置1 的单元变量 如果form1 被多次实例化,可能出错 //所以位置1 的变量要完全消除,我范过这样的错误,教训啊end;
 
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

D
回复
0
查看
726
DelphiTeacher的专栏
D
D
回复
0
查看
728
DelphiTeacher的专栏
D
D
回复
0
查看
575
DelphiTeacher的专栏
D
D
回复
0
查看
485
DelphiTeacher的专栏
D
顶部