type 
   ablist=class(tlist)
...templist:tclass现给一字符串a='ablist',如何用代码生成 templist:='ablist'.create;表达的不是很清楚。
类似:abob=class(tpersistent)          ....
 a:tobject;
 b:tclass;
 b:=findclass('abob')
 a:=b.create;

解决方案 »

  1.   

    我实在想不通为什么这么多人问用字符串动态生成类,方法太多了。
    对于面向对象来讲,抽象类就完全可以代替你这样畸形的想法!
    第二种方法就是建立一个TStrings,它的strings[i]代表类名称,它指向的对象就是这个类的实例
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      s, s1 :TStrings;
    begin
      s :=TStringList.Create ;
      s.AddObject('TStringList', s);  s1 :=TStringList(s.Objects[0]).Create ;
      s1.Add('我使用字符串创建哦!');
      ShowMessage(s1.Strings[0] + ‘ ’ + s1.Strings[1]);
    end;
      

  3.   

    楼主是不是要根据输入的字符串生成字符串(类名)对应的类啊.
    类需要注册一下..
    在类单元中:
    initialization
      RegisterClass(classname);可以创建一个unit
    unit UnitReg;interfaceuses classunit1,
         classunti2,
         ~~~(省略号)implementationend.在程序里引用一下unitreg
      

  4.   

    楼上有高手了...惭愧,献丑了
    现在吃饭去,有空和linux2001好好谈谈
      

  5.   

    s1 :=TStringList(s.Objects[0]).Create ;这样的类型不是还是tstringlist?这不是跟我上面所要生成的不一样吗?我用的是tlist。  SetObjectProp((aobject As aclass), 'ChildHead',ChildDrawList);这个childdrawlist也是由ablist继承(tdrawlist=class(ablist))下来的,
    如果直接用
    SetObjectProp((aobject As aclass), 'ChildHead',ablist.create);进行赋值,根本就取不到值,但用上面是可以的。
      

  6.   

    我试过了。
    RegisterClass(classname);如果所定义的类似这个abob=class(tpersistent)就可以定义,
    但如果定义的是ablist=class(tlist)不让我定义。