减小Delphi可执行文件的大小,非高手莫入(200分)

  • 主题发起人 主题发起人 yayongm
  • 开始时间 开始时间
我倒·~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
晕死,uses Windows,Message;

足够应付普通程序了! 不大于10K
 
哎哎 , 看得TMD头都晕了~
 
我最赞成 ‘荷塘新月’的观点了,减肥的最好办法就是尽量多的用api和自己的程序实现,尽可能少用的现成的控件尤其是界面花的控件,当然又要好看,又要‘苗条’这里需要做个适度选择。如果大家有兴趣的话,不防试试在某些过程和函数用嵌入汇编去做,这是目前世界上减肥最有效的方法。我就曾经试过在delphi中插入汇编,希望大家有其他好方法共享!
 
请问各位:
1:有哪个厂家的编译器能做到最大优化?(也就是没用到的方法不编入可执行代码)。
2:有人说Delphi使用运行期包编译出来的运行程序实际没变小,因为要加上发布程序时
需要的包的大小,那么请问是否也要加上使用到的动态库的大小(如:User32.dll)。

 
可能的话用较低的版本进行编译。
 
uses 的文件没有使用是被包含到exe中的!
同意drummer
所以定时清理没有用到的文件uses是减小exe的一个方法!
 
我们大多数时间都在使用微软的平台写程序,为了能够在Windows平台上正常的运行,
宝蓝公司不得不封装了太多的东西,并且在程序编译时带上他们,而VC/VB对此的
限制就少得多。
 
要想体积小,直接用API,编译出来比VC的要小的多,
并且速度很快,
如果想更小更快,那就用汇编语言
不过,需要一定的汇编功底,否则不但快不了,而且还容易出错

其实,一个最好的建议是,有选择性地用一些第三方组件,
不要在窗体资源中保存太多的数据
 
改用匯編吧﹗讓INTEL/MICROSOFT/BORLAND全部倒閉﹗我也要准備重新找工作了﹗
 
有人看过这些程序吗,超酷的3Ddemo,绝对令你感到惊异,更重要的是非常非常小
http://pop532.vicp.net/other/3ddemo.rar
 
呵呵,教你一次,不过,我也保留版权 ,如果你要学习,请牢牢记住: www.delphibbs.com 。
____________________________________
资源文件 MainRes.rc
MAINAPP DIALOG 0, 0, 222, 127
STYLE DS_ABSALIGN | DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP |
WS_CAPTION | WS_SYSMENU
FONT 9, "宋体"
BEGIN
LTEXT "教你一招",-1,89,17,42,8
PUSHBUTTON "按钮",10001,27,99,41,19
PUSHBUTTON "按钮",10002,90,99,41,19
PUSHBUTTON "退出",10003,153,99,41,19
END
____________________________________
项目文件 Project1.dpr
program Project1;
uses
Windows,Messages;
{$R MainRes.res}
procedure AppArrange(Wnd:HWnd);
begin
// ......
end;

function CallBackProc(DlgWnd:HWnd; CallMessage:UINT;
DlgWParam: WPARAM; DlgLParam: LPARAM): BOOL; stdcall;
begin
Result:=True;
case CallMessage of
WM_INITDIALOG:AppArrange(DlgWnd);
WM_Close:PostQuitMessage(0);
end;
end;

begin
DialogBoxParam(hInstance, 'MAINFORM', 0, @CallBackProc,0);
end.
 
to fanren945
demo不多~
 
少用组件,多用API,如果对VCL比较熟悉,可以对Uses单元中用到的东西单独的提取出来,
放到你的公共模块中,这样应该减小程序的大小,不过这样或者从dfm着手会大大的降低开发的速度
也就失去了用Delphi开发的意义了,而且现在硬盘容量也不像Dos时代了。:) 个人观点
 
有一个老外用API写的Delphi程序。他还重写了两个VCL单元。System.pas另一个忘了。
不用压缩编译完只有3.1K。谁知道那一由下载的。我以前下载过
 
请看 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1208145

这是我在上面问题中的回答:
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中挖出来的一些类型定义,函数等.
我试过这样编译我的dll才几K,而用普通方式要4X K
 
如果要像楼主说的那样做,我看最好不用delphi,而改用VC++了!一切都从底层写。
 
后退
顶部