Build with runtime packages的高级问题(50分)

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

zys1975117

Unregistered / Unconfirmed
GUEST, unregistred user!
我想请教一下各位:在编译EXE和DLL时,选中和不选中Build with runtime packages时,
有什么实质性的区别,比如内存的管理。比如我遇到一些问题:如果选中时,我有很多DLL,
调入DLL后,任务栏只有一个图标,如果不选中,那么一个DLL在任务栏上就显示一个,当然
是有办法解决,但是什么原因呢。又如:选中编译后程序没有问题,不选中编译时就会出现内
存方面的错误,或者退出系统时出错。所以我想问到底选中和不选中有什么实质性的区别。
 
嘻嘻,我又来回答你的问题了,你的问题我总能碰到,大概是缘分罢。[:D]
怎么会有这样的怪事呢?应该和Build with runtime packages是否被选中没有任何的关系呀!
你把你的代码贴出来。
 
to 小笨笨:是呀,我也觉得。能够认识你真是三生有幸。
 问题我都已经想办法解决,但就是不能解释为什么?并且我想知道选中和不选中
Build with runtime packages有程序运作上有什么差别。你不信你可以试一下:
有几个DLL程序,调用后,如果选中,任务栏只有一个图标,如果不选中,那么一个
DLL在任务栏上就显示一个,当然是可以通过传递句柄来解决,但就是不明白为什么。
又如我一个DLL有个TABLE,一个DLL有一个DATASOURCE和DBGRID,我将TABLE的地址传
过去,如果选中,就可以新增,修改等,如果不选中那么一个滚动记录就会出错。
 
zys1975117:
1.先说说Build with runtime packages
如果选中Build with runtime packages,编译器在编译你的程序的时候,没有把程序中用到
的“包”包含在你的程序中,这样,我们就会看到编译后得到的.exe文件很小。以后,我们
如果要在没安装相同版本的Delphi的机器上运行这个程序时,就要将所需的包一起带过去,
这些包中最基本的是VCL50.bpl,如果你用到其他功能,如:数据库,还要带上相应的xxx.bpl
文件。
反之,如果不选中Build with runtime packages,编译器就会将用到的包都编译进你的程序
中,这样,生成的程序会大很多,但好处是不需要另外带那些包文件了。
2.你说的有几个DLL被调用,在Windows任务栏上就有几个图标或称为“按钮”。
这种现象在我这里没有,不论Build with runtime packages是否被选中。我不知道你的代码
是什么样的,但可以肯定的是,和Build with runtime packages没有任何关系,而真正的原
因在别的地方,而现在仅仅给你一种假相,迷惑了你。最好把代码贴出来。
3.在调用DLL时,如果DLL中有Form,最好是将主程序的句柄传递给DLL,使DLL中的窗体在建立
的时候,它的“父”就是主程序,下面是《Delphi 5开发人员指南》的原话。
>>为使DLL中的窗体真正成为应用程序模式窗体,必须将应用程序的句柄赋给DLL的Application.Handle属性,
>>正如上面代码所述。要是不这样做,结果难以预料,尤其是当想最小化该DLL的窗体时,必须确保赋
>>给Application.Handle属性的AHandle值不为nil。
4.关于数据库控件在DLL中的使用,你可以参考我在另外的一个帖子中转贴的一篇文章。非常
完整的一个例子。http://www.delphibbs.com/delphibbs/dispq.asp?lid=1763134
 
后退
顶部