+ -
当前位置:首页 → 问答吧 → delphi中ComponentCount是什么属性?

delphi中ComponentCount是什么属性?

时间:2011-11-09

来源:互联网

Type
 TY = class(Y)
 ...
End`

Var A:TY;

1、其中Y继承自TForm
2、TForm继承自TCustomForm
3、TCustomForm继承自TScrollingWinControl
4、TScrollingWinControl继承自TWinControl
5、TWinControl继承自TControl
6、TControl继承自TComponent
7、TComponent中含有ComponentCount属性

//-- 调用:
Self.ComponentCount; // -- 可以调用
A.ComponentCount; // -- 内存访问错误


请问这是什么原因?难道self和A不一样么?

备注:A的创建方式:A := XXXX.Create(Apllication);

作者: Wencombe   发布时间: 2011-11-09

A和self不一样。
self表示实例本身。可以代表任意实例。
而A只代表A而已。
出现A.ComponentCount; // -- 内存访问错误
的原因是,A可能还没有被创建就被你引用了。

作者: SmallHand   发布时间: 2011-11-09

引用 1 楼 smallhand 的回复:

A和self不一样。
self表示实例本身。可以代表任意实例。
而A只代表A而已。
出现A.ComponentCount; // -- 内存访问错误
的原因是,A可能还没有被创建就被你引用了。

是的,我调用的方式在TY FormCreate当中进行创建,此时的A变量应该尚未创建成功,应用应当会处理内存访问错误的问题,但是self为什么可以呢?
如您所说:“self表示实例本身。可以代表任意实例。”
此时的A尚未创建成功,且该函数的前缀(.)所属于TY的方法,此时的self就是TY类的对象A
且Integer(A),和Integer(Self)是相同的,如果A访问出了问题,那么self为何不会出问题么?

作者: Wencombe   发布时间: 2011-11-09