想做个程序,有个思路:把主程序和模块分离开,当然需要接口,不打算使用DLL,想采用BPL模式。可是怎样才能知道一个BPL包里注册的类名称?我可以用LoadPackage方法加载某个包,然后用GetClass方法获取包里面的类名,为了实现主程序与模块解耦就得知道实现了这个接口的包里的类名称。不知如何实现,求解。Delphi接口

解决方案 »

  1.   

    自己开发的bpl,自己不知道类名称吗?
    我现在遇到卸载包的问题,一个包我可以直接得到handle,然后卸载,但是多个包,多个窗体,怎么知道哪个是哪个?
      

  2.   

    感觉可以有个专门管理BPL包的模块,主程序只负责调用这个模块,这个模块负责加载和卸载这些包。
      

  3.   

    第一步:pkHandle:=LoadPackage("test.bpl");//加载包
    第二步:GetClass("TForm1");//获取包中注册的类(就是不想在主程序里写死这个类名,只要知道了包名称,就能知道里面注册的类该多好)
    第三部:UnloadPackage(pkHandle);//卸载包
      

  4.   

    可以搞一个模块管理的bpl,里面搞一个list,每个模块package加载后自动把自己的一些信息加到这个list里(在initializatioin节里做就行了)。
      

  5.   

    GetClass
    是不是可以换个函数,得到注册类
      

  6.   

    @u011512342
    现在的问题是,我知道了BPL的名字,我怎么知道里面的注册类。
      

  7.   

    BPL和DLL共同使用,BPL用来共享类和全局对象就行!
      

  8.   

    如果单纯用BPL都不需要用接口了.字符串啊,类啊,对象啊随便传递.
    当然如果你从设计学角度出发,面向接口不关心实现设计的方式,用接口也无可厚非.不过有前车之鉴,代码会非常臃肿.
      

  9.   

    http://hi.baidu.com/rarnu/item/4777cdcaf4f43a16b67a2472
      

  10.   

    大神,我们的开发环境是delphi6的 这种方法估计不行
      

  11.   


    bpl提供了哪些类,必须自己提供一个接口告知调用者,自动发现是不可能的。
      

  12.   


    bpl提供了哪些类,必须自己提供一个接口告知调用者,自动发现是不可能的。
    能不能给写个例子啊,接口变量好像和对象还不能转换