高分求关于 bpl 制作,bpl之间,程序与bpl间窗体,互相调用,bpl之间的窗体继承 的文章。这类贴子不多,希望能在我的这个贴子里面能收集(zohzjf)关

  • 主题发起人 主题发起人 zohzjf
  • 开始时间 开始时间
Z

zohzjf

Unregistered / Unconfirmed
GUEST, unregistred user!
高分求关于 bpl 制作,bpl之间,程序与bpl间窗体,互相调用,bpl之间的窗体继承 的文章。这类贴子不多,希望能在我的这个贴子里面能收集(zohzjf)关心程序发布问题的朋友请往这里看 (100分)<br />我现在是这样的
数据模块,所有变量,公用函数包 窗体基类包
| |------
| | |
------------------------------------- |
| | | |
| 窗体函数包 | |
| | 业务基类包 查询基类 包
| | | |
----------------- | |
| | | |
| 输出的公用函数包 | |
| | | |
--------------------------------------------------
| |
| |
| ------------ 各查询 包
| | | | |
收货订单调拨。。 |。
(业务包 |
| |
------------
|
|
主窗体包 &lt;---调用&lt;--------输出功能函数包
|
|
|
主窗体显示函数
|
|
主程序---调用--&gt;


框架看着是完美的,但业务包的bpl太大有一兆,查询和各业务是耦合的,
不能通过,要把业务和查询连在一起不是更大了吗。 有人解决这个问题吗,
 
你的框架在这里变形了....
 
该好了。如上
 
个人认为通过bpl来实现分层不太合适
bpl来实现分化模块比较合适

如果说分层,不应该在bpl的基础上,而应该在类的基础上
 
各业务之间也是耦合的。。。要不然我也分开了。
程序是原来做好的,我现在把它安装我的这个框架整理
现在整理到业务模块,查询模块以及下面的内容还没有做
。。。。。。
各位位有什么好的建议,
我现在了群星的代码,只是我们原来的和群星的差别太大,
我们是继承太多,而且个个模块关联性很大,
如订单和收货, 可以订单审核后 可以直接收货, 订单单元引用收货单元。
而收货单元也可以掉出“订单查询”单元, 而订单查询单元有引用订单单元。。。。

。。。。。。
各位位有什么好的建议,
我怎么整理。。。
 
yanyandt2, : 原来是安装类的分层,个人认为类写的很好。。(类的框架不是我搭的)
现在又要在这个继承上,变成发布成bpl。。。
现在我要搭bpl的框架
 
我现在的工作是整理后使程序发布和维护方便
 
我现在是这样的
数据模块,所有变量,公用函数包 窗体基类包
| |------
| | |
------------------------------------- |
| | | |
| 窗体函数包 | |
| | 业务基类包 查询基类 包
| | | |
----------------- | |
| | | |
| 输出的公用函数包 | |
| | | |
--------------------------------------------------
| | |
| | |
| ------------ 各查询 包 |
| | | | | |
收货订单调拨。。 |。 |
(业务包 | |
| | |
------------ |
|
|
主窗体包 &lt;---调用&lt;--------输出功能函数包
|
|
|
主窗体显示函数
|
|
主程序---调用--&gt;
 
我的意思是最好不用bpl来实现分层
例如可以这样由下到上的引用

公用包
|
————————————————————————
| | |
业务1(包括窗体) 业务2 业务3
| | |
——————————————————————————
|
主程序

 
我的经验不是很丰富
一起讨论一下吧
 
bpl之间的互相调用使用统一的调用接口,
同一层次之间最好不要互相引用
 
我感觉凡是关于函数建立一个数据模块比较好
 
谢谢大家关注模式已经确定,编译也通过。。。。
碰到一些细节问题,缠我一天时间才解决。 我使用的控件还有点冲突,
最后凑合凑合也解决了。
下面是程序发布的问题了。。。。
顺利的话,这个大概要等原星期才能完成,中间还可能碰到什么问题,
请大家关注,另外,大家如果有什么问题和想法,欢迎讨论。。。。。。



数据模块,所有变量,公用函数包 窗体基类包
| |
| |
| |
| |--------
| | |
| | |
| | |
| 业务基类包 查询基类 包
| | |
--------------------------------------------------
| | | ........ |
| | | |
| | | |
业务包1 业务包2 业务包...... 综合查询
(含查询) (含查询) | |
| | | |
| | | |
-----------------------------------------------
|
|
主窗体包 &lt;---调用&lt;--------输出功能函数包
|
|
|
主窗体显示函数
|
|
主程序---调用--&gt;


 
老兄,你用什么建摸工具?
 
继续提问: 我新建了一个包,设置为 designtime and runtime 、rebulid as need。
这个包所有单元的dcu文件是 236k 而为什么bpl是469k 错这么多? 为什么?

另外设置成explicit rebulid 的时候为什么老是报错
Never-build package '*******' requires always-build package '*******'

谁给我解释一下 rebulid as need与 explicit rebulid的意思合区别,我是这样理解的
rebulid as need:编译需要的,编译所引用其他包的单元,把引用的代码信息含到bpl中去。
explicit rebulid 直接编译引用的包,运行的时候引用到的代码直接在引用的bpl中运行。

我没有相关资料不知道对不对,请问最好的设置时什么?
000000000000000000000000000000000000000000000000000000000000000000000000000000


回复人: alphax(多喝了三五杯) ( ) 信誉:130 2004-03-02 18:05:00 得分:0


1,你的dcu虽然是236k, 但是一个bpl至少要包含两个单元system, sysinit,这两个单元是
rtl支持单元,在我delphi 7的配置中,不包含debug信息的system.dcu和sysinit.dcu共计104k,加上资源和PE文件的头部(导入section,导出section等等),bpl为469k就不足为奇了

2. explicit rebuild通常用于一些比较基础,比较低层的bpl,有很多其他的bpl需要它们,
它们很少变动,如果它们变动那么其他另外一些引用到它们的bpl就必须跟着rebuild,否则
会发生运行时没有找到某些符号的错误或者PE Loader不能正确重定位一些符号的入口,因为它们的实际入口的RVA已经发生变化,而那些依赖于该bpl的bpl却没有重新编译,它们的import section和重定位表没有反映这个变化。
对这样的package应用explicit rebuild选项,可以确保当这些package需要rebuild的时候你获得一个通知,从而你会临时将explicit rebuild改为rebuild as need,然后再rebuild所有
其它需要这个package的package,,,有点拗口,
当rebuild完成了,你可以恢复explicit rebuild

发生requires always-build package的原因是被引用的package包含了某一个单元,而这个
单元的最后修改日期比被引用的package的目标文件的日期新,因此这个被引用的package
必须rebuild,但是这个package设置了explicit rebuild选项

-------------------------------------------------------------------------------------------
回复人: zohzjf(蚂蚁上树) ( ) 信誉:100 2004-03-02 23:09:00 得分:0


谢谢 alphax(多喝了三五杯)
但我有个疑问: 如果 我要是连着含有 诸如 system, sysinit 单元的包一起发布,而不是要这些
单元编译到我写的包中去 我改怎么做呢;

说明 包编译后没有
另外没有出现 Unit '××××' implicitly imported into package "*******"'
的警告提示






 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
922
SUNSTONE的Delphi笔记
S
后退
顶部