delphi BPL+接口困惑

地狱圣者 2013-07-31 11:26:27
想做个程序,有个思路:把主程序和模块分离开,当然需要接口,不打算使用DLL,想采用BPL模式。可是怎样才能知道一个BPL包里注册的类名称?我可以用LoadPackage方法加载某个包,然后用GetClass方法获取包里面的类名,为了实现主程序与模块解耦就得知道实现了这个接口的包里的类名称。不知如何实现,求解。
...全文
426 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
地狱圣者 2013-08-01
  • 打赏
  • 举报
回复
引用 15 楼 u011512342 的回复:
[quote=引用 7 楼 dongjunwen 的回复:] @u011512342 现在的问题是,我知道了BPL的名字,我怎么知道里面的注册类。
bpl提供了哪些类,必须自己提供一个接口告知调用者,自动发现是不可能的。[/quote] 能不能给写个例子啊,接口变量好像和对象还不能转换
ksjxqy 2013-08-01
  • 打赏
  • 举报
回复
引用 7 楼 dongjunwen 的回复:
@u011512342 现在的问题是,我知道了BPL的名字,我怎么知道里面的注册类。
bpl提供了哪些类,必须自己提供一个接口告知调用者,自动发现是不可能的。
hooo 2013-08-01
  • 打赏
  • 举报
回复
引用 7 楼 dongjunwen 的回复:
@u011512342 现在的问题是,我知道了BPL的名字,我怎么知道里面的注册类。
你注册类的名字 应该要跟包的名字有关联才可以。
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
第一步:pkHandle:=LoadPackage("test.bpl");//加载包 第二步:GetClass("TForm1");//获取包中注册的类(就是不想在主程序里写死这个类名,只要知道了包名称,就能知道里面注册的类该多好) 第三部:UnloadPackage(pkHandle);//卸载包
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
感觉可以有个专门管理BPL包的模块,主程序只负责调用这个模块,这个模块负责加载和卸载这些包。
zrssweet 2013-07-31
  • 打赏
  • 举报
回复
自己开发的bpl,自己不知道类名称吗? 我现在遇到卸载包的问题,一个包我可以直接得到handle,然后卸载,但是多个包,多个窗体,怎么知道哪个是哪个?
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
引用 13 楼 sololie 的回复:
http://hi.baidu.com/rarnu/item/4777cdcaf4f43a16b67a2472
大神,我们的开发环境是delphi6的 这种方法估计不行
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
引用 11 楼 sololie 的回复:
google delphi 反射
查了 看不太懂 求大神赐教
sololie 2013-07-31
  • 打赏
  • 举报
回复
google delphi 反射
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
引用 9 楼 wr960204 的回复:
如果单纯用BPL都不需要用接口了.字符串啊,类啊,对象啊随便传递. 当然如果你从设计学角度出发,面向接口不关心实现设计的方式,用接口也无可厚非.不过有前车之鉴,代码会非常臃肿.
就想做个程序,以后可以开发插件,预留个接口。
武稀松 2013-07-31
  • 打赏
  • 举报
回复
如果单纯用BPL都不需要用接口了.字符串啊,类啊,对象啊随便传递. 当然如果你从设计学角度出发,面向接口不关心实现设计的方式,用接口也无可厚非.不过有前车之鉴,代码会非常臃肿.
不得闲 2013-07-31
  • 打赏
  • 举报
回复
BPL和DLL共同使用,BPL用来共享类和全局对象就行!
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
@u011512342 现在的问题是,我知道了BPL的名字,我怎么知道里面的注册类。
地狱圣者 2013-07-31
  • 打赏
  • 举报
回复
换个什么函数呢
oushengfen 2013-07-31
  • 打赏
  • 举报
回复
GetClass 是不是可以换个函数,得到注册类
ksjxqy 2013-07-31
  • 打赏
  • 举报
回复
可以搞一个模块管理的bpl,里面搞一个list,每个模块package加载后自动把自己的一些信息加到这个list里(在initializatioin节里做就行了)。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧