Delphi2010生成的程序体积太大了

时间:2022-09-25 20:34:00
就一个空白窗口,什么都没有,编译出来将近800K,CB的更大,比D7、D2007、D2009生成的大了一倍。

这要是用几个控件、代码再多点,不是要十几M了?!







51 个解决方案

#1


啊????????

#2


那你就选 Build with runtime  package.

小很多。

#3


其实有时的确没必要做成一个EXE

#4


可能unicode的缘故

#5


现在硬盘、内存不差容量。

#6


引用 5 楼 larruping 的回复:
现在硬盘、内存不差容量。

和硬盘,内存扯上什么关系了,

#7


现在的程序不就是越做越大了吗。以前的游戏才十几MB,大点的话也就几百MB,你看现在的游戏动辙几个G的

#8


版本升级了, 其中当然增加了特性什么的, 编译出来的可执行文件比以前大很正常。
现在已经不是以前硬盘、内存寸土寸金的时代了, 还在介意exe文件大了几十K、几百K,我觉得意义不大。
我着重的是新技术能否提升生产力,多了那么几十、几百K, 我可不介意。

#9


这么占空间,是不是你的机子有问题?!

#10


现在已经对空间不敏感了,重要的是用户体验和效率

#11


楼主你怎么不因为Vista,WIN7一安装就用了10多个G而叨叨?

文件大小很重要么?现在硬盘容量对比几年前增加了多少?

#12


是很郁闷,800多k,
压缩一下还有280k左右

#13


扯吧!继续扯吧!MS的东西因为得益系统才“显得”这个小,如果没有系统支持,得,至少得十几MB

#14


我网速才512K,如果以后程序都那么大,我要下载该多么费事!体积大的确不好,谁不喜欢精简?

#15


我还用delphi6,够用就行

#16


DELPHI2007生成一个空EXE就已经够大的了,差不多是D7空EXE的俩倍,从那时起就没打算用D2007
我还是比较在乎EXE大小的,而且我没发现什么在D7下实现不了,DELPHI20007+能实现的功能,所以一直用D7

#17


客户已经不关心这个了,只要用着舒服就好!
大点有什么关系……

#18


引用 8 楼 larruping 的回复:
版本升级了, 其中当然增加了特性什么的, 编译出来的可执行文件比以前大很正常。
现在已经不是以前硬盘、内存寸土寸金的时代了, 还在介意exe文件大了几十K、几百K,我觉得意义不大。
我着重的是新技术能否提升生产力,多了那么几十、几百K, 我可不介意。


不是内存硬盘的问题,而是它可能影响启动速度.

#19


写木马的时候要在意大小,做应用软件无所谓

#20


确实大很多,在空窗体上放button,ADO两个控件,1.7M
不过大点也没所谓!vs编译出来的是小,客部署的时候需要.net框架,这个就要数十M
所以delphi大这么点。没所谓咯,只要稳定,这次打算就用了!

#21


楼主怎么不用DOS?DOS比起VISTA、Win7小太多了。  这不是抬杠吗?哈哈

#22


引用 15 楼 liangqingzhi 的回复:
我还用delphi6,够用就行


就是.   

#23


的确是大多了

#24


人家没有操作系统优势
其实微软一直把运行库集成到操作系统中了,所以其开发工具生成的EXE体积可以小
而Borland早年曾试图和微软协商将其Delphi运行库一起集成到Windows中
被微软利用自身优势拒绝
所以Delphi没办法,只好什么东西都往一个EXE里放
体积自然大了

#25


看官方论坛上提到EXE程序体积增加的主要原因是RTTI,从而导致了EXE程序体积变大。

#26


主要原因是RTTI,编译时可以不把RTTI信息编译进去,这样就小了

#27


扩充的RTTI信息将使编译生成的文件大小巨幅增大,而如下是关闭RTTI的方法:


There are some options which reduce the final executable size somewhat:

{$WEAKLINKRTTI ON} or dcc32 –weaklinkrtti command-line option

But a recompile of choice RTL and VCL units is required to eliminate much actual RTTI data, using this directive:

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

The ‘EXPLICIT’ causes any classes defined after this point in the file to not inherit RTTI settings from the ancestor class, while the method, property and field clauses indicate that no extended RTTI should be produced for any of these elements at any level of visibility.

Having a decent level of RTTI available by default means that third-party libraries can assume its existence. The default level includes RTTI for all fields, which means that object graphs (modulo external resource links) are e.g. serializable at the binary level by default; public methods and properties having RTTI means that e.g. containers using Inversion of Control can apply to objects by default.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nhconch/archive/2009/09/02/4512530.aspx

#28


据说有内置的exe压缩功能,有人试验了吗?

#29


关注内置的exe压缩功能

#30


抱歉,刚看了2010的features-matrix,没有内置的exe压缩功能。

#31


从今以后大家可以使用build with runtime packages.
这样就小很多了。

#32


真扯,程序大小是用代码编出来的,关工具什么事??,自己不会改代码,反而怨起工具了,真是可笑。。。

#33


楼上的真是好笑……你用Delphi 7生成个空窗体比较?关闭RTTI据测试,效果不大

#34


C++ Builder 2010生成一个窗口30几K

#35


不管怎么说,体积小总是好的。

#36


该回复于2009-09-08 13:32:29被版主删除

#37


引用 34 楼 caixin99 的回复:
C++ Builder 2010生成一个窗口30几K

还得拷贝一些运行库,不止几M

#38


如果 Delphi 还是折磨个升级策略,迟早死翘翘,目前看不出D10 和 D3、D4 有什么革命性的进步?VCL 也好,语言本身也好,都没什么实质性的改善,目前D7 基本就是中级版本了,以后的升级基本是扯蛋!
 

#39


Delphi3使用ing,欢迎交流。

#40


还有使用Delphi3的啊~~~

#41


一定有它的道理  D7 一定要改革 现在的系统跨平台性 大小无所谓  有不做木马 木马也不是好做的 会做木马也活不了

#42


为何不用build with runtime packages?

#43


引用 2 楼 bigsail 的回复:
那你就选 Build with runtime package.

小很多。


就是这样。

#44


反正你都是用盗版,还计较多给点空间

#45


引用 2 楼 bigsail 的回复:
那你就选 Build with runtime package.

小很多。


就是这样。

#46


每天回帖即可获得10分可用分

#47


靠………………

#48


10分

#49


我也关注这问题,想一好多办法,都小不下来。

#50


还有默认的 ICON 图标占了 300K,把默认图标换小一点的

#1


啊????????

#2


那你就选 Build with runtime  package.

小很多。

#3


其实有时的确没必要做成一个EXE

#4


可能unicode的缘故

#5


现在硬盘、内存不差容量。

#6


引用 5 楼 larruping 的回复:
现在硬盘、内存不差容量。

和硬盘,内存扯上什么关系了,

#7


现在的程序不就是越做越大了吗。以前的游戏才十几MB,大点的话也就几百MB,你看现在的游戏动辙几个G的

#8


版本升级了, 其中当然增加了特性什么的, 编译出来的可执行文件比以前大很正常。
现在已经不是以前硬盘、内存寸土寸金的时代了, 还在介意exe文件大了几十K、几百K,我觉得意义不大。
我着重的是新技术能否提升生产力,多了那么几十、几百K, 我可不介意。

#9


这么占空间,是不是你的机子有问题?!

#10


现在已经对空间不敏感了,重要的是用户体验和效率

#11


楼主你怎么不因为Vista,WIN7一安装就用了10多个G而叨叨?

文件大小很重要么?现在硬盘容量对比几年前增加了多少?

#12


是很郁闷,800多k,
压缩一下还有280k左右

#13


扯吧!继续扯吧!MS的东西因为得益系统才“显得”这个小,如果没有系统支持,得,至少得十几MB

#14


我网速才512K,如果以后程序都那么大,我要下载该多么费事!体积大的确不好,谁不喜欢精简?

#15


我还用delphi6,够用就行

#16


DELPHI2007生成一个空EXE就已经够大的了,差不多是D7空EXE的俩倍,从那时起就没打算用D2007
我还是比较在乎EXE大小的,而且我没发现什么在D7下实现不了,DELPHI20007+能实现的功能,所以一直用D7

#17


客户已经不关心这个了,只要用着舒服就好!
大点有什么关系……

#18


引用 8 楼 larruping 的回复:
版本升级了, 其中当然增加了特性什么的, 编译出来的可执行文件比以前大很正常。
现在已经不是以前硬盘、内存寸土寸金的时代了, 还在介意exe文件大了几十K、几百K,我觉得意义不大。
我着重的是新技术能否提升生产力,多了那么几十、几百K, 我可不介意。


不是内存硬盘的问题,而是它可能影响启动速度.

#19


写木马的时候要在意大小,做应用软件无所谓

#20


确实大很多,在空窗体上放button,ADO两个控件,1.7M
不过大点也没所谓!vs编译出来的是小,客部署的时候需要.net框架,这个就要数十M
所以delphi大这么点。没所谓咯,只要稳定,这次打算就用了!

#21


楼主怎么不用DOS?DOS比起VISTA、Win7小太多了。  这不是抬杠吗?哈哈

#22


引用 15 楼 liangqingzhi 的回复:
我还用delphi6,够用就行


就是.   

#23


的确是大多了

#24


人家没有操作系统优势
其实微软一直把运行库集成到操作系统中了,所以其开发工具生成的EXE体积可以小
而Borland早年曾试图和微软协商将其Delphi运行库一起集成到Windows中
被微软利用自身优势拒绝
所以Delphi没办法,只好什么东西都往一个EXE里放
体积自然大了

#25


看官方论坛上提到EXE程序体积增加的主要原因是RTTI,从而导致了EXE程序体积变大。

#26


主要原因是RTTI,编译时可以不把RTTI信息编译进去,这样就小了

#27


扩充的RTTI信息将使编译生成的文件大小巨幅增大,而如下是关闭RTTI的方法:


There are some options which reduce the final executable size somewhat:

{$WEAKLINKRTTI ON} or dcc32 –weaklinkrtti command-line option

But a recompile of choice RTL and VCL units is required to eliminate much actual RTTI data, using this directive:

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

The ‘EXPLICIT’ causes any classes defined after this point in the file to not inherit RTTI settings from the ancestor class, while the method, property and field clauses indicate that no extended RTTI should be produced for any of these elements at any level of visibility.

Having a decent level of RTTI available by default means that third-party libraries can assume its existence. The default level includes RTTI for all fields, which means that object graphs (modulo external resource links) are e.g. serializable at the binary level by default; public methods and properties having RTTI means that e.g. containers using Inversion of Control can apply to objects by default.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nhconch/archive/2009/09/02/4512530.aspx

#28


据说有内置的exe压缩功能,有人试验了吗?

#29


关注内置的exe压缩功能

#30


抱歉,刚看了2010的features-matrix,没有内置的exe压缩功能。

#31


从今以后大家可以使用build with runtime packages.
这样就小很多了。

#32


真扯,程序大小是用代码编出来的,关工具什么事??,自己不会改代码,反而怨起工具了,真是可笑。。。

#33


楼上的真是好笑……你用Delphi 7生成个空窗体比较?关闭RTTI据测试,效果不大

#34


C++ Builder 2010生成一个窗口30几K

#35


不管怎么说,体积小总是好的。

#36


该回复于2009-09-08 13:32:29被版主删除

#37


引用 34 楼 caixin99 的回复:
C++ Builder 2010生成一个窗口30几K

还得拷贝一些运行库,不止几M

#38


如果 Delphi 还是折磨个升级策略,迟早死翘翘,目前看不出D10 和 D3、D4 有什么革命性的进步?VCL 也好,语言本身也好,都没什么实质性的改善,目前D7 基本就是中级版本了,以后的升级基本是扯蛋!
 

#39


Delphi3使用ing,欢迎交流。

#40


还有使用Delphi3的啊~~~

#41


一定有它的道理  D7 一定要改革 现在的系统跨平台性 大小无所谓  有不做木马 木马也不是好做的 会做木马也活不了

#42


为何不用build with runtime packages?

#43


引用 2 楼 bigsail 的回复:
那你就选 Build with runtime package.

小很多。


就是这样。

#44


反正你都是用盗版,还计较多给点空间

#45


引用 2 楼 bigsail 的回复:
那你就选 Build with runtime package.

小很多。


就是这样。

#46


每天回帖即可获得10分可用分

#47


靠………………

#48


10分

#49


我也关注这问题,想一好多办法,都小不下来。

#50


还有默认的 ICON 图标占了 300K,把默认图标换小一点的