在Delphi中我知道一个对象,但是只知道他的一个父类型,我如何根据这个对象来创建一个和他一样类型的对象?

解决方案 »

  1.   

    get it's parent class' type
    var
      tmp: TObject;
    begin
      try
        tmp as (that type) := (that type as tobject).create(nil);
      finally
        tmp.free;
      end;
    end;
      

  2.   

    我的难题在于:我要在程序中动态的在ADODataSet中添加一些LookUp类型的字段,困难在于,我不能在数据集打开的时候,添加字段,我必须关闭数据集,然后添加,再打开,但是,这就需要全部的字段都是静态字段,不能让数据集自动生成字段,因为添加了LookUp字段以后数据集就不会创建默认字段。这样打开数据集,LookUp字段就会找不到对照字段而出错。所以我不得不在数据集关闭以前,生成全部的和默认字段兼容的静态字段,然后关闭,添加静态字段,巨大的困难产生了:我无法很方便的创建兼容字段,因为我可以知道字段的类型,然后创建,但是字段的类型太多了,我的If then else语句长长的一串,并且不同的字段拥有不同的关键属性,我需要为每一种类型添加全部的关键属性,这个工作实在太困难了。长长的语句写起来耗费时间不说,真的在运行的时候,给每一个属性添加内容,又引发了一大堆的后面触发产生的过程,虽然不会出错,但是如果反复的添加LookUp字段,速度可想而知。TField又没有Assign可以用,他的那个Assign实际上是给字段添加Value我根本不能用。可能会问为什么不在设计期直接在ADODataSet绑定静态字段,实际上我的ADODataSet也是动态产生的,我好困惑,有没有一个好的方法,让我少写一些代码。