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

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

  1. delphi 2010与delphi XE破解版的冲突

    在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...

  2. Delphi 2010 XE 中使用 JSON 之 SuperObject68-6

    JSON之SuperObject(1):一直盼着Delphi能够直接支持"正则:Delphi2009刚来的时候,有了JSON,但:Delphi2010带了两个相关单元:DBXJS:我想不等了 ...

  3. Delphi 2010初体验,是时候抛弃Delphi 7了

    Delphi 2010已于近日由Embarcadero公司发布.作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能.它的使用感受以及对Delph ...

  4. Delphi 2010

    Delphi 2010已早由Embarcadero公司发布.作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能.它的使用感受以及对Delphi语 ...

  5. Delphi 2010下载+完美破解

    点击链接进入http://altd.embarcadero.com/download/RADStudio2010/delphicbuilder_2010_3615_win.isoRAD Studio/ ...

  6. RAD Studio/Delphi 2010 3615下载+破解

    RAD Studio/Delphi 2010 3615下载+破解 官方下载地址: http://altd.embarcadero.com/download/RADStudio2010/delphicb ...

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

    打开 Delphi 2010 的时候, 它报一个错误 "displayNotification: 内存不够",从而无法使用 Delphi , 解决办法 摘自http://www.cnblogs.com ...

  8. delphi 2010是动画GIF的支持方法

    下面delphi 2010是动画GIF的支持方法:  1.在窗体上放一个Image1控件.注意:这时设置其Picture属性,加载一幅动画GIF是不会动画显示的.  2.在窗体的FormCreate事 ...

  9. delphi 2010 导出sql server 数据到DBF乱码问题

    近日,由于业务需要导出sql server 数据到DBF文件,要查询多表记录,并适当处理后生成导出DBF文件,系统使用delphi2010平台开发. 首先按要求在VFP里创建DBF表,字段数有240个 ...

随机推荐

  1. jQuery学习-显示与隐藏

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 3931: [CQOI2015]网络吞吐量

    3931: [CQOI2015]网络吞吐量 链接 分析: 跑一遍dijkstra,加入可以存在于最短路中的点,拆点最大流. 代码: #include<cstdio> #include< ...

  3. 4538: [Hnoi2016]网络

    4538: [Hnoi2016]网络 链接 分析: 整体二分. 对于一次操作,可以二分一个答案mid,判断权值大于mid的路径是否全部经过这个点.如果是 ,那么这次询问的答案在[l,mid-1]之间, ...

  4. BZOJ 2818 GCD 素数筛+欧拉函数+前缀和

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...

  5. css绘制常见的几何图形

    前言:终于我的大一生活结束了,迎来了愉快的暑假,大家都开始了各自的忙碌.一直忙着一些项目的事情,终于决定今天要更新一篇博客了,对上一阶段的学习做简单的总结. 这次我主要总结一下用Css绘制各种形状的技 ...

  6. Linux中的mysql指令

    如何启动/停止/重启MySQL一.启动方式1.使用 service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start3 ...

  7. Jmeter中正则表达式提取器

    在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,虽然并不直接涉及到请求的测试,但是对于数据的传递起着很大的作用,本篇博文就是主要讲解关于正则表达式及其在Jmeter的Sampler中的调 ...

  8. ESP8266/ESP32模块晶振频偏调试

    ESP8266/ESP32模块晶振频偏调试 !> 前提:晶振频偏调试是需要仪器设备的支持才能完成的. 测试环境:IQ2010综合测试仪 本文仅记录有关频偏调试的主要内容,其余不在赘述. IQ20 ...

  9. 使用着色器在WebGL3D场景中呈现行星表面地形

    实验目的:按照一定规律生成类地行星地表地形区块,并用合理的方式将地形块显示出来 涉及知识:Babylon.js引擎应用.着色器编程.正态分布.数据处理.canvas像素操作 github地址:http ...

  10. jquery 3.0 新版本

    https://code.jquery.com/