基类B
type
  A = class
  public
    FObjects:    //就是这里 TList 还是 Array of TObject ??
  ……
  ……
end;
  B = class(TComObject)
  Public
    AObject: A;
  …… 
  ……
end;
从B派生类B1, B2 等等。
B1、B2中的FObjects是确定的,但不同。
比如说,Length(B1.A1.FObjects):= 5 ;   Length(B2.A2.FObjects):=10
而且,FObjects是只读的,里面的元素按一种顺序排列固定不变的。
用Array of Tobject 吧:
1。好象不能用SetLength( array, 0)来释放数组,不知道怎么释放。
2。Array of Tobject要不要建实例(算TObject吗?)
  B1.A1.FObjects[1]: = obj1这样直接赋值行不行。
用TList吧:
1。用Add方法会从索引0开始存。而我的要求是,每个元素的位置是固定的,
  很可能,我只想用的索引 3, 4, 5
还有一个问题
基类C 的implementation 中定义了一个变量 var Param: TObject;
子类 D = Class(C), 那子类会继承param吗?我的测试是不能,请确认一下。

解决方案 »

  1.   

    1。好象不能用SetLength( array, 0)来释放数组,不知道怎么释放。
    ______________不用管他,你把对象都释放了就行
    2。Array of Tobject要不要建实例(算TObject吗?)
      B1.A1.FObjects[1]: = obj1这样直接赋值行不行。
    ______________No problem用TList吧:
    1。用Add方法会从索引0开始存。而我的要求是,每个元素的位置是固定的,
      很可能,我只想用的索引 3, 4, 5
    ______________想要实现办法很多
       就你说的这些,我觉得还不如就用Array of Object还有一个问题
    基类C 的implementation 中定义了一个变量 var Param: TObject;
    子类 D = Class(C), 那子类会继承param吗?我的测试是不能,请确认一下。
    ______________不能,var中声明的不是属于某个类的吧             那是unit的内容,只要uses了这个unit,整个application可见
      

  2.   

    谢谢,就最后一个问题没搞定。
    我是需要一个静态属性,delphi本身没有
    看人家的文章,可以用
    implementation 
     var Param: TObject;
    end;
    这样来实现。
    如果是属于unit的,那么有unit A1、 A2都uses了这个unit
    那么在unit B中 uses了A1, A2,那不是param的值全部一样了???那下面的要求怎么实现?
    基类
    type
      A = class
      public
        class preporty Info: TObject;  //delphi没有类属性
    end;A有子类A1, A2  等等
    A1, A2中的 class preporty Info是不同的
    怎么实现?
      

  3.   

    在类的实现里面做A的实现用Param,A1的实现可以用Param1,A2的实现用Param2不过没有必要最好不要这么做类的实现依靠外部的全局对象,不大好你可以把Param作为类的一个属性,手工维护一致性
      

  4.   

    类有方法,为什么会没有属性呢,真是,呵呵……
    A = Array of TObjectvar 
     A1: A;A1怎么建一个实例?
      

  5.   

    类属性是没有必要存在的,没有意义,道理我说不清类有方法,为什么会没有属性呢,真是,呵呵……数据不需要创建实例的A = Array of TObjectvar 
     A1: A;
     jjj: TObjectA1=Setlength(A,10);
    A1[i]:= jjj.Create;就可以,不过记得A1[i].Free;
      

  6.   

    xie cuo leA1[i]:= Tobject.Create;
      

  7.   

    类属性在单件的设计方法中很有用.其实在Delphi中,如果我们将单件实现放在一个单元中,然后在这个单元中定义一个单元的变量,就可以达到类变量的效果,而且finalization和initialization部分可以提供一些辅助的作用,总的来说,delphi不提供类变量相应可以稍微降低编译器的复杂度而不对功能有实际意义上的损害,就是看起来不那么习惯而已.