例如,在EDIT里输入的字符串,根据这个字符串Create相应的类,如果没有这个类,可以有个提示什么的。。
怎么实现?

解决方案 »

  1.   

    参考下面的代码:type
        TAnimal = class(TPersistent)
        procedure Sound; virtual; abstract;
      end;  TAnimalClass = class of TAnimal;  TCat = class(TAnimal)
        procedure Sound; override;
      end;  TDog = class(TAnimal)
        procedure Sound; override;
      end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vClass: TAnimalClass;
      aObj: TAnimal;
    begin
      RegisterClass(TDog);
      RegisterClass(TCat);
      vClass := TAnimalClass(FindClass(Edit1.Text));
      aObj := vClass.Create;
      aObj.Sound;
      aObj.Free;
    end;{ TCat }procedure TCat.Sound;
    begin
      inherited;
      ShowMessage('喵喵');
    end;{ TDog }procedure TDog.Sound;
    begin
      inherited;
      ShowMessage('汪汪');
    end;
      

  2.   

    这个问题,在delphi2010前,一直不能很好的解决,大部分需要一些辅助手段来处理才能实现从字符串到类的过程,但是2010因为给类中的public域加入了RTTI信息,因此实现从 字符串到类的实例 可以比较完美的解决了。
    具体可以参考下我以前写的一篇博客,呵呵,算是简单实现了从字符串到类实例并且成功调用中的方法。Delphi2010 利用新的 RTTI 实现对包中的类从字符串到类的调用
      

  3.   

    eval("\$tmp=$str;");$str=$tmp;eval太强大,类似于js里的eval使用要小心,特别主要用户带来的输入