减小Delphi 2010/delphi XE编译出来的文件大小

1.禁用RTTI 
禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了:

{ Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) } 
{$IF CompilerVersion >= 21.0} 
{$WEAKLINKRTTI ON} 
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} 
{$IFEND}

2.realease模式编译

3.去掉Debug信息

4.使用upx、aspack压缩一下 
==================================================== 
1.引用的单元会影响EXE和DLL的大小,把Uses中不需要的单元去掉,可以变小一些。 
当然如果直接用SDK的方式来开发,那是最小的。

SysUtils.pas System.pas sysinit.pas里面有很多你用不到的公用变量和类型定义,你可以 
另起炉灶,把你的程序要用到的变量,函数,类型拷贝到另一个同名的pas文件中,编译时不用 
Delphi的集成环境编译,用命令行dcc进行编译,注意要把你新建的基本库pas也包含进去 
如 DCC32 -Q -DDLL System.pas sysinit.pas MyProject.dpr -M -Y -Z -$D- 
其中system.pas sysinit.pas是从原来的pas中挖出来的一些类型定义,函数等.

  一、体积测试、比较

  环境: delphi2010 +  vclskin5.4 + dev5.0 
  1、delphi2010 单窗口 
  796KB 
  2、delphi2010 单窗口 + button + text 
  820KB 
  3、delphi2010 单窗口 + vclskin                                                                         
  1.13MB(不加载skin文件),    1.16(加载skin文件) 
  4、delphi2010 +  vclskin5.4 + dev5.0( cXbutton + cXtext) 
  1.8MB 
  5、delphi2010 +  vclskin5.4 + dev5.0( cXbutton + cXtext + cxGrid) 
  4.18MB   ------ 
  6、delphi2010 +  vclskin5.4 + dev5.0( cXbutton + cXtext + cxGrid )   +fastReport 
  5.67M  to   6.67MB 
  二、原因 
  1、delphi2010使用的wideString和RTTI 
  wideString使字符串长度变成了原来的2倍,但增长体积是有限的 
  RTTI是主要原因 
  2、dev  
  a、使用了skin 
  5.0版本当使用了QtGrid,会自动引入cxLookAndFeels, cxLookAndFeelPainters 
  有时候将unit中skin都去掉效果不大,可以重新安装dev,安装时候不选skin,可以省下2M 
  b、使用了print 
  5M to   9M 
  三、减小delphi体积的方法 
  1、关闭RTTI反射机制 
   自从Delphi2010中引入了新的RTTI反射机制后,编译出来的程序会变得很大,这是因为默认情况下 Delphi2010 给所有类都加上了反射机制。而我们的工程并不每每都需要使用到这个功能,所以对于不需要使用的地方,我们可以简单的用下面的方法禁用RTTI反射,从而大 大减小文件体积。 
  禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了: 
  { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) }  
  {$IF CompilerVersion >= 21.0}  
  {$WEAKLINKRTTI ON}  
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}  
  {$IFEND} 
  -------------实测,
        1.1环境下,文件大小为750KB; 
  1.2环境下,774KB; 
  1.3环境下,大小为1.10MB(加载skin文件) 
  英文:http://www.zipplet.co.uk/index.php/content/article s_programming_delphi2010rtti 
  2、关闭debug信息 (默认已关闭) 
  Project -> Options -> Linking -> Debug information -> disabled 
  测试: 
  disabled:11.6MB 
  an  disabled:31.2MB 
  四、其它方法 
  1、减小DELPHI应用程序的大小 
  http://hi.baidu.com/51elv/blog/item/5637a5cff0ef14 31f8dc6124.html 
  01) 使用加壳工具(如 UPX,ASPack 等) 
  02) 使用 KOL 
  03) 不使用VCL来编写程序 
  04) 使用 ACL (API 控制库) 
  05) 使用 StripReloc 
  06) 去除运程调试信息与 TD32 
  07) 把允许的代码写到 DLL 中 
  08) 不要在设计时把图片放置在 Form 上,而是运行时加载 
  09) 使用被压缩的图片(使用JPG 而不用 BMP) 
  10) 在 DFM 文件中减少属性 
  (参考后面的链接 "怎样使您的EXE文件更轻便") 
  11) Use the TStringList replacement by ~LOM~ 
  Use the Minireg - TRegistry replacement by Ben Hochstrasser 
  五、其他文章 
  dev编译exe 
  http://www.devexpress.com/Support/Center/p/Q243794 .aspx?searchtext=cxLookAndFeels&p=T1|P0|0

时间: 2024-10-13 21:23:13

减小Delphi 2010/delphi XE编译出来的文件大小的相关文章

delphi 2010 资源文件使用

Project  Recources...   //1提取出资源 procedure TForm1.Button1Click(Sender: TObject);begin  with  TResourceStream.Create(HInstance, 'SnapShot_EXE', RT_RCDATA) do  begin     SavetoFile('SnapShot.exe');     Free;  end;end; //播放wav文件 //使用icon 文件 TResourceStr

Delphi 2010下载+完美破解

点击链接进入http://altd.embarcadero.com/download/RADStudio2010/delphicbuilder_2010_3615_win.isoRAD Studio/Delphi 2010 3615下载+破解 - 资源共享 - 网风社... RAD Studio/Delphi 2010 3615下载+破解官方下载地址:http://altd.embarcadero.com/download/RADStudio2010/delphicbuilder_2010_36

Delphi 2010 里公开的 Midas.dll 的源代码!!Delphi 2010 V14.0.3449.21988 的Midas.dll 修正了上一版本的大BUG!

源代码是用C++ Builder写的. 下载: http://files.cnblogs.com/AnyDelphi/Midas_Source.rar http://www.cnblogs.com/AnyDelphi/archive/2009/08/13/1545175.html#2264357 上一版本的Midas.dll Delphi 2007编译的程序如果是用Delphi 2010的Midas.dll是会出错的. 这一版就不会了. http://www.cnblogs.com/AnyDel

Delphi 2010 Can't load package C:\Programme\Afalinasoft\Add-in Express 2\d5units\adxwizardd5.bpl.

"Can't load package C:\Programme\Afalinasoft\Add-in Express 2\d5units\adxwizardd5.bpl. Component TWordDocument can't be registered by package dcloffice2k50.bpl because it has already been registered by package dclaxserver50. " I think you have i

delphi 2010是动画GIF的支持方法

下面delphi 2010是动画GIF的支持方法:  1.在窗体上放一个Image1控件.注意:这时设置其Picture属性,加载一幅动画GIF是不会动画显示的.  2.在窗体的FormCreate事件或其他事件(如按钮的点击事件)中写如下代码:  Image1.AutoSize := True; Form1.Autosize := True; Image1.Picture.LoadFromFile('C:\Gif89a.gif'); TGIFImage(Image1.Picture.Graph

Delphi 2010错误 "displayNotification: 内存不够"

打开 Delphi 2010 的时候, 它报一个错误 "displayNotification: 内存不够",从而无法使用 Delphi , 解决办法 摘自http://www.cnblogs.com/del/archive/2008/08/12/1266368.html 从 Delphi 2010 启动菜单上点右键 -> 查看属性:"C:\Program Files\CodeGear\RAD Studio\7.0\bin\bds.exe" -pDelphi 这里已经有了一个启动

Delphi2007升级到Delphi 2010总结

这两天把一个使用Delphi2007成功升级到了Delphi2010.升级途中很艰辛,总结了 以下经验与大家分享.另外,D7使用的第三方组件,由于官方没有发布For Delphi2010的更新,修改的第三 方组件列表见文章尾部. 1,PChar因为Delphi不支持无类型指针的算术运算,很多程序员使用 PChar来代替Pointer,即使指针指向目标并不是PAnsiChar. 考虑如下代码: var    P:PChar;   Buffer:Pointer;begin   GetMem(Buff

Delphi 2010控件安装

delphi2010下安装控件 2010-10-15 15:21:59|  分类: delphi|举报|字号 订阅 下载LOFTER客户端 delphi 有很多组件可以用,下面介绍一下 在delphi2010中 添加组件的方法. 在D2010IDE,初学者大都能够安装.Net控件,但VCL控件如何安装?大都茫然!下面就来力求详尽地回答这一问题. 首先注意到Delphi2010的组件/控件安装,只支持BPL文件.所以,不管是pas文件.dpk文件或ocx文件类的组件或控件,都需要将其;变成bpl包

永久解决delphi 2010不能2次启动问题

由于在Windows安装了最近的更新(KB2982791, KB2970228)后,Delphi的IDE需要创建的一个文件%TEMP%\EditorLineEnds.ttr会被系统锁定,导致除非重新启动操作系统,否则Delphi 8~2010无法启动两次. 如果你使用了IDEFixPack 2.7以上版本,则不会受到这个问题的影响.IDEFixPack会阻止IDE调用AddFontResource函数以避免锁定这个文件(这个补丁也可以解决安装了Adobe Type Manager之后的性能问题)