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);

解决方案 »

  1.   

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

  2.   

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