如题:请大家各抒己见

解决方案 »

  1.   

    注册类使用RegisterClass 函数,但是你的类必须是从TPersistent 继承的使用FindClass 函数,输入类名,就可以得到TPersistentClass ,用TPersistentClass 来创建你的类的实例。这样你就可以动态根据类的名字来创建类
      

  2.   

    类的信息包括这些:
    AutoTable,
    InitTable,
    TypeInfo,
    FieldTable,
    MethodTable,
    DynamicTable,
    ClassName,
    InstanceSize,
    Parent,
    SafeCallException,  //以下部分地址多数会被System里的函数替代
    AfterConstruction,
    BeforeDestruction,
    Dispatch,
    DefaultHandler,
    NewInstance,
    FreeInstance,
    Destroy,
    QueryInterface,
    AddRef,
    Release,
    CreateObject,
    还有使用constructor,class function,class procedure标注的过程或者函数
    以及
    Published节点的RTTI信息.一个类未实例之前,能访问以上信息,如:TForm1.ClassName 这是因为ClassName函数是在TObject中class 标注的函数,class Function ClassName : ShortString;
    单纯的Function,procedure如果不在published节点中而且没有被关联在published节点中,也只能通过实例来访问,如果在published可以通过RTTI获取地址来访问.实例化后才能访问节点中的数据以及单纯的function,procedure,如
    Form1.Caption;
    Form1.Show;以上只是说明了一下什么时候使用类,什么时候使用实例而
    RegistryClass和FindClass的用法,通常用在,有公共父类,而且子类繁多或者子类数量不确定的情况下,公共类的概括程度越高点优势越明显.