减小Delphi的Exe文件大小(11种方法)
一般来说,由Delphi生成的EXE文件,要比其由它编程语言生成的体积大一些。这主要是由于使用VCL的原因(当然,VCL是有许多优点的!)
以下是减小EXE文件大小的几种途径:
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
01)
UPX 是一个免费、轻便、可扩展和高性能的可执行文件加壳工具,支持多种不同的可执行文件格式。它可以达到非常优秀的压缩比,且可以非常快的解压。
http://upx.sourceforge.net/
ASPack 是一款高级的Win32可执行文件压缩器,可以减小32位Windows程序的大小达70%。(ASPack的压缩率提高了zip文件格式产业标准10-20%) ASPack使得Windows 95/98/NT 程序与库更小,降低了网络的传输量。它也可以在一定程度上保护程序免受那些非专业黑客的反向工程。压缩后的程序在运行时基本上没有什么性能上的影响。
http://www.aspack.com/aspack.htm
{****************************************************************}
02)
KOL - (关键对象库 Key Objects Library)是用于 Delphi 开发强大的32位Windows图形用户界面应用程序一套对象库。它比用VCL进行开发可以使程序变得更小。
http://bonanzas.rinet.ru/
{****************************************************************}
03)
不使用VCL
如果您想要实现瘦小的EXE文件,就不要使用VCL,Delphi 完全可以让您通过调用WinAPI函数来实现Delphi 100%的丰富功能。
http://nonvcl.luckie-online.de/
http://www.erm.tu-cottbus.de/delphi/stuff/Tutorials/nonVCL/index.html
http://www.swissdelphicenter.ch/en/delphizeus
http://www.tutorials.delphi-source.de/nonvcl/
{****************************************************************}
04)
ACL (API 控制库 API Controls Library)
纯以API写程序是完全可能的,但我希望达到两个目的 —— 写出瘦小程序和生成新的控制库,在写程序的时候,也就创建了我自己的TWinControl和全部标准的Windows控制类.
http://www.apress.ru/pages/bokovikov/delphi/index.html
{****************************************************************}
05)
StripReloc是一个免费的(GPL 许可协议) 命令行应用程序,用于移去Win32 PE格式文件多余的重配区段(".reloc") ,以减小它们的大小。大多数编译器/链接程序(包括Delphi)会在EXE文件里写入重配区段,但由于EXE文件从不会重新部署,所以该区段只会浪费空间。
http://www.jrsoftware.org/striprlc.php
{****************************************************************}
06)
去除调试信息
Debug信息会占用一部分空间的,对于最终的发行版,完全可以不要这部分信息 。
Delphi IDE菜单
project-Options-Compiler - Debugging 与
project- Options - Linker - EXE and DLL options
去掉下面两项,可以减少文件的大小
"Include TD32 debug info" 与 "Build with runtime packages".
{****************************************************************}
08/09)
对于图片
最好不要在设计期把图片加到窗体,尤其是大的图片,因为这样以来,Delphi会把图片也编译到你的可执行文件中去,从而增大EXE文件的尺寸。建议在运行时,以代码的方式,实时的载入图片。
{****************************************************************}
10)
怎样使您的EXE文件更轻便:
http://www.undu.com/DN970301/00000064.htm
{****************************************************************}
11)
TStringList replacement by ~LOM~
Minireg - TRegistry replacement
Trackback地址: http://www.yculblog.com/trackback/4/340843
http://blog.csdn.net/diligentcatrich/article/details/31059041
减小Delphi的Exe文件大小(11种方法)的更多相关文章
- [转]Delphi调用cmd的两种方法
delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...
- WPF程序将DLL嵌入到EXE的两种方法
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...
- python列表的11种方法
python列表的11种方法2017年11月24日 03:26:43 Milton-Long 阅读数:254版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...
- python 3.x 字典的11种方法
python 3.x 字典的11种方法2017年11月25日 01:02:11 Milton-Long 阅读数:535 标签: python python字典方法 更多个人分类: python-学习之 ...
- delphi控制 word的几种方法--转
对几种方法的难易程度的判别 a.通过Delphi的控件TOleContainer 将Word嵌入 这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可以 ...
- 完美实现CSS垂直居中的11种方法
在做前端项目时CSS的水平居中我们经常使用,但有时还会用到CSS垂直居中,对于小白来说这个就有些难度了,下面看一下我是如何实现的 本人前端小白,正在做一个小程序开发的项目,css样式调整搞的头都大了. ...
- javaScript去重的11种方法
前言 去重是开发和面试中经常遇到的问题,下面是总结的 11 种去重方法 方法 示例数组 var arr = [1, 2, 4, 5, 5, 2, 1, 1, 4, 6] set + 解构赋值 这种方法 ...
- ECHO命令输出空行的11种方法和效率
标题: 批处理技术内幕:ECHO命令作者: Demon链接: http://demon.tw/reverse/cmd-internal-echo.html版权: 本博客的所有文章,都遵守“署名-非商业 ...
- 让你的app体验更丝滑的11种方法!冲击手机应用榜单Top3指日可待
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专栏 一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求,这样 ...
随机推荐
- 【JQ成长笔记】关于$(this).index与$.each的使用
本人菜鸟入门,小庙容不下大神的 O(∩_∩)O~~轻喷~ 工作当中响应某个需求,切换选项卡的一个效果,根据每个选项下的内容元素的总数不同而进行不同的html变化(如果选项卡下的内容为空就等于XXX,否 ...
- 初学swift笔记变量的定义(一)
swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...
- python中实现多线程的几种方式
python实现多线程的方式大概有 1.threading 2._thread #!/usr/bin/python #!coding:utf-8 import threading def action ...
- IOS研究院之打开照相机与本地相册选择图片
如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样.最终点击发送将按钮将图片2进制图片上传服务器. 下面我 ...
- perl /m修饰符使用说明
高级用法: 多行匹配: grok正则和普通正则一样, 默认是不支持匹配回车换行的. perl的/m选项 The /m modifier allows ^ and $ to match immediat ...
- android 开发代码被黑客破译有那么容易吗?
很多程序员辛辛苦苦开发出的android开发代码,很容易就被黑客翻译了. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了 ...
- Asp.net SqlDataReader转成Datatable
Asp.net SqlDataReader转成Datatable 所属栏目:Asp.net 编程 | 发布日期:2013年04月05日 | 点击:517 次 内容摘要:Asp.net 数据存储,呈现方 ...
- 学习DTD和Schema的几个例子
可以使用DTD(文档类型定义)来规定xml文档构建模块,可用起对xml文件进行验证.具体用法转:http://www.w3school.com.cn/dtd/dtd_intro.asp.同样也可以用S ...
- JqueryEasyUI中combox的数据不显示
在做一个用jeasyui做的项目中遇到一个问题,对应的数据取出来了但是数据项一直出不来后来经过检查原来是赋值的时候对应的数组元素的名称写的有问题,以后一定要注意对应的问题,不能犯类似的错误 funct ...
- SQL Server数据库--》top关键字,order by排序,distinct去除重复记录,sql聚合函数,模糊查询,通配符,空值处理。。。。
top关键字:写在select后面 字段的前面 比如你要显示查询的前5条记录,如下所示: select top 5 * from Student 一般情况下,top是和order by连用的 orde ...