F flycat Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #1 我现在做的一个DELPHI应用程序有4兆多,怎样才能把它编译的小一些,如编译成带DLL文件,(就象PB编译的应用程序一样,EXE文件比较小,编成带PBD或DLL)。请各位大虾指点,请尽量详细。
S snailping Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #3 build with runtime package 另外压缩
W wint Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #5 upx可能更好。我从ASPACK转向UPX的。 我下载这些工具喜欢到www.softseek.com 找。 有分类,有搜索。。。。
A AHHA Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #6 UPX压缩的体积小一些,但作出的产品没ASPACK作出的快。产品体积越大越明显。 我嘛----- 小东东UPX 几百KB以上的都用ASPACK 但现在用ASPACK可被UNASPACK反压缩,不知有否UPX的反压缩工具?
UPX压缩的体积小一些,但作出的产品没ASPACK作出的快。产品体积越大越明显。 我嘛----- 小东东UPX 几百KB以上的都用ASPACK 但现在用ASPACK可被UNASPACK反压缩,不知有否UPX的反压缩工具?
Y yilan Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #7 Exe只留主程序,其它的各模块编译成DLL,我原来的程序有近7M,现在不到1M了。
E elan Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #8 delphi 变得 dll 不也得几百 k 马?看不出小在哪儿
H Hexi Unregistered / Unconfirmed GUEST, unregistred user! 2000-07-19 #9 为什么要减小Exe的大小,你的程序越大用户就认为你的程序的功能越多,但你也不能放一些 垃圾进去充大。 如果你想让Exe小的话那你直接调用API不是很小吗,Delphi编译出来的程序可能小锝让 你大吃一惊在加上Upx一压更小了。(废话)
为什么要减小Exe的大小,你的程序越大用户就认为你的程序的功能越多,但你也不能放一些 垃圾进去充大。 如果你想让Exe小的话那你直接调用API不是很小吗,Delphi编译出来的程序可能小锝让 你大吃一惊在加上Upx一压更小了。(废话)
D datasoft Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-04 #11 对于4M的文件来说,用RUNTIME PACKAGE往往不合算(你可以用RUNTIME PACKAGE选项用Build编译后, 再在Project->Information for XXXX 查看一下需要哪些包(包在WINDOWS/SYSTEM目录下), 如果这些包加上你的EXE总和大于或差不多比没有这个选项时大,那还是别用,因为用包相对较慢。) ASPACK的确很不错,至少我这么认为,用它压的DELPHI程序运行速度没有什么变化,而且由于程序变小, 加载速度更快了。 至于用DLL,绝对没有必要,那样只会让你的程序更大,更慢,除非你的程序非常大, 且许多模块并非经常用,那样可以不调入内存,这才有意义。 我还要提一点,就现在来说,4M的程序不算大,除非你在网上发布。
对于4M的文件来说,用RUNTIME PACKAGE往往不合算(你可以用RUNTIME PACKAGE选项用Build编译后, 再在Project->Information for XXXX 查看一下需要哪些包(包在WINDOWS/SYSTEM目录下), 如果这些包加上你的EXE总和大于或差不多比没有这个选项时大,那还是别用,因为用包相对较慢。) ASPACK的确很不错,至少我这么认为,用它压的DELPHI程序运行速度没有什么变化,而且由于程序变小, 加载速度更快了。 至于用DLL,绝对没有必要,那样只会让你的程序更大,更慢,除非你的程序非常大, 且许多模块并非经常用,那样可以不调入内存,这才有意义。 我还要提一点,就现在来说,4M的程序不算大,除非你在网上发布。
C cat.yy Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-04 #12 你可以试试以下的方法: 1。 看看有没有类似的或相同的代码,把他们编成过程或函数,要注意将底这些 模块与主程序间的耦合度(便于调试和升级);如果这些模块较多可以编到dll中(不 多最好不要这样,因为一个dll文件的框架不小----好象有110多KB)。 2。 优化一下算法 ---- 可以考虑换个控件,看看具体算法有无冗余,必要时可以 考虑用牺牲运行所需内存以减小EXE文件的磁盘空间(比如用变量代替某些代码 ---- 例如: xxx1.loadfromfile(opendialog1.filename); xxx2.loadfromfile(opendialog1.filename); xxx3.loadfromfile(opendialog1.filename); 不如这样: var aa:string; ... aa := opendialog1.filename; xxx1.loadfromfile(aa); xxx2.loadfromfile(aa); xxx3.loadfromfile(aa); 系统减少了代码“opendialog1.filename” 只是加了一些找地址的代码 ---- 代码少啊)。 3。 用动态加载<b>包</b>的办法 把那些“写”着控件代码的*.pas放到<b>包</b>里, 运行时加载他们吧。 4。 如果你的程序界面贴了图 ---- 尽可能用小尺寸的,尽可能用JPG格式的; 如果你使用了自编的*.res(它会在编译时连入EXE的)把那些图片取一些出来吧。 5。 提醒一句:千万不能为节省代码把一些出错处理程序kill了 ---- 程序会不稳 定的。 *** 以上是经验之谈,提供于此,仅供参考,如有误谬,敬请指正。
你可以试试以下的方法: 1。 看看有没有类似的或相同的代码,把他们编成过程或函数,要注意将底这些 模块与主程序间的耦合度(便于调试和升级);如果这些模块较多可以编到dll中(不 多最好不要这样,因为一个dll文件的框架不小----好象有110多KB)。 2。 优化一下算法 ---- 可以考虑换个控件,看看具体算法有无冗余,必要时可以 考虑用牺牲运行所需内存以减小EXE文件的磁盘空间(比如用变量代替某些代码 ---- 例如: xxx1.loadfromfile(opendialog1.filename); xxx2.loadfromfile(opendialog1.filename); xxx3.loadfromfile(opendialog1.filename); 不如这样: var aa:string; ... aa := opendialog1.filename; xxx1.loadfromfile(aa); xxx2.loadfromfile(aa); xxx3.loadfromfile(aa); 系统减少了代码“opendialog1.filename” 只是加了一些找地址的代码 ---- 代码少啊)。 3。 用动态加载<b>包</b>的办法 把那些“写”着控件代码的*.pas放到<b>包</b>里, 运行时加载他们吧。 4。 如果你的程序界面贴了图 ---- 尽可能用小尺寸的,尽可能用JPG格式的; 如果你使用了自编的*.res(它会在编译时连入EXE的)把那些图片取一些出来吧。 5。 提醒一句:千万不能为节省代码把一些出错处理程序kill了 ---- 程序会不稳 定的。 *** 以上是经验之谈,提供于此,仅供参考,如有误谬,敬请指正。
W woodstock Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-04 #13 aspack 有2.0但是怎么注册,如何注册?
M mogao Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-04 #14 把下面这几句写入到.reg文件中,运行注册: REGEDIT4 [HKEY_CURRENT_USER/Software/ASPack] "Key"="FPDsi9BISOCHYNf0q+CU5Ea5A9wf9AFoCG4tHMf7FP1AIM+GzQOKFf3X3TT8BkegTiyrd36lTLVdbMRg69019e/G933gpK3kLl7iVL3YoXHOMk3+3IWxNaWOFu5XMx4WRoaRrz7XhxKG7fIkEcU8YPnQoPBSkX2eoBwOrDML3Ac="
把下面这几句写入到.reg文件中,运行注册: REGEDIT4 [HKEY_CURRENT_USER/Software/ASPack] "Key"="FPDsi9BISOCHYNf0q+CU5Ea5A9wf9AFoCG4tHMf7FP1AIM+GzQOKFf3X3TT8BkegTiyrd36lTLVdbMRg69019e/G933gpK3kLl7iVL3YoXHOMk3+3IWxNaWOFu5XMx4WRoaRrz7XhxKG7fIkEcU8YPnQoPBSkX2eoBwOrDML3Ac="
S santgan Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-04 #16 使用aspack又负面影响没有?比如程序变得不稳定?
P peace_2000 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-05 #19 动态的调用API函数。最好做到窗体以及其它控件的重用! 对于经常用的模块可以编写DDL。 再一个就是:尽量避免冗于代码。做到算法优化。如果你要用图片最好是动态的创建和释放!