我想动态的调用一个类,如何用包实现类似插件的功能,
最好有代码,3x

解决方案 »

  1.   

    动态类肯定有一个通用的接口,实现这个接口就可以了
    如IDispatch
      GetTypeInfoCount
      GetTypeInfo
      GetIDsOfNames
      Invoke
    等。
    建议用COM+吧
      

  2.   

    动态调用一个类?当然是做成COM组件的形式了
      

  3.   

    不用这么麻烦吧,
    我看过 delphi6技术手册,
    里面用RegisterClass & GetClass就可以了,
    不过我照则他的做,始终无法找到类
      GetClas(AClassName)=nil //我 ft
    谁能指点一下
      

  4.   

    将类封装到dll中,然后动态调用即可
      

  5.   

    你可搜索一下。如果找不到,可以发短信息给我,我前几天刚找一几个例子,也在用上面的RegisterClass&GetClass的技术做一点小东西。
      

  6.   

    我编了个例子,可是却出错了
    代码如下:
    Unit1;  //
    uses
      Unit2;  //定义了TAClassTFrom1=Class(TForm)
      FormCreate(Sender: TObject);
      buttom1Click(Sender: TObject);
    private
      FObj: TAClass;
    end;procedure FormCreate;
    var
      hModal: Hxxx;  
      AClass: TAMetaClass;
    begin
      hModal := LoadPackage('Package1.bpl');  //这行能运行
      AClass = TAMetaClass(GetClass('TBClass')); 
        //为什么总是返回nil,也就是找不到TBClass
      Button1.Enabled := AClass<>Nil;
      if AClass<>nil then FObj := AClass.Create(nil);
    end;buttom1Click(Sender: TObject);
    begin
      messageDlg(FObj.ClassName, mtWarning, [mbOk],0);
    end;
    //
    unit2;TAClass = class(TComponet)
    end
    TAMetaClass = class of TAClass;//unit3;  in Package1.dpk
    uses unit2
    TBClass = class(TAClass)initiliazation
      registerClass(TBClass);  //注册类TBClass
    end;这个例子我是模仿maste delphi 6 的例子写的
    可是不知道为什么出错,我保证没有拼写错误