请问如何让delphi(数据库)程序变得小一些(50分)

  • 主题发起人 主题发起人 feifeich
  • 开始时间 开始时间
F

feifeich

Unregistered / Unconfirmed
GUEST, unregistred user!
程序只有1M,做完安装程序后就5M了,因为还有bde包含在里面,有什么
办法能变得小一些呢。我知道由于vcl的限制,最简单的delphi程序也会有
200k,我写的一个程序窗口比较多,20几个吧,编译后的可执行文件就达到
了1M。如果编译成动态链接库,又得带上vcl40.bpl等库文件,总大小反而更大。
 
1.似乎可以 不把所有的库文件都包括在里面,把用到的库文件加入即可;
2.利用一些软件压缩(专用于delphi的);
 
同意xronin的说法
你可以到网上载一个Aspack,很好使的,一下子可以压缩 40 % ..........

(网址到处有!)
 
用upx或aspack压缩
反正我在用UPX,压缩率比用winzip还要高。
 
; 用别的程序做安装,不要用DELPHI带的那个做安装。
InstallMaster做安装。只不过得自己动手找出几个你的要的文件。
(参看: http://www.delphibbs.com/delphibbs/dispq.asp?lid=432044 )

用IS Express Delphi Edition 做出来的安装程序太约是2M多,但用InstallMaster
做的不到1M。
 
在葵花宝典中有一篇文章转贴给你
Delphi程序员都知道,在数据库应用程序开发完成后,要发布程序需要同时发布BDE(Borland Database Engine),否则会引起错误“A Error occurred while attempingto initilize Borland Database Engine(Error $2109)”。当觉得程序太大而辛辛苦苦精简自己的程序到满意时,却发现BDE管理程序器需要9M之巨,不由感到沮丧,真有点自己的努力被糟蹋的感觉。不过也不必太沮丧,只要肯尝试,还是有办法来精简BDE的。
首先来看看BDE目录中的文件,所有文件确实有近9M大吧。不过有些可能是用不到的,关键文件的作用可参见Bde32.HLP中“Introduction to Borland Database Engine”下的“Core BDE Files”,其中列出了BDE的关键文件及其作用,可以以此作为依据来尝试精简BDE驱动程序。下面是各个文件的作用:
一、不可缺少的文件
Blw32.dll:语言驱动函数库。
Idapi32.dll:BDE基本函数库。
Fareast.bll、Usa.bll:远东语言及美国语言驱动程序,对中文软件不可缺少。
Idr20009.dll:错误信息库。
二、数据库驱动程序(根据需要选择一个或多个)
Idasci32.dll:Ascii文本数据库驱动程序函数库,如果不用Ascii文本数据库,可以不要。
Iddao32.dll:Access数据库驱动程序函数库,如果不用Access数据库,可以不要。
Iddbas32.dll:dBase数据库驱动程序函数库,如果不用dBase数据库,可以不要。
Idodbc32.dll:ODBC数据库驱动程序函数库,如果不用ODBC数据库,可以不要。
Idpdx32.dll:Paradox数据库驱动程序函数库,如果不用Paradox数据库,可以不要。
三、其它驱动程序和配置文件(根据需要选择一个或多个)
Idbat32.dll:批操作驱动程序函数库,如果不用TBatchMove控件或DbiBatchMove类函数,可以不要。
Iddr32.dll:Data Repository驱动程序函数库,如果不用Data Repository功能,可以不要。
Idprov32.dll:BDE DataSet provide驱动程序函数库,如果不用TProvider控件,可以不要。
Idqbe32.dll:QBE驱动程序函数库,如果不用Query By Example,可以不要。
Idsql32.dll:SQL查询驱动程序函数库,如果不用TQuery进行查询,可以不要。
Idapi32.cfg:BDE配置文件,如果程序中没有特殊要求,可以不要。也可以在BDE管理器中设置正确后再分发。
四、其它文件(一般不用)
BDE32.HLP、BDE32.CNT:BDE帮助文件,可以不要。
BdeAdmin.exe、BdeAdmin.HLP、BdeAdmin.CNT:BDE管理器及帮助文件,如果不会发生要求软件用户自己配置BDE的情况时,可以不要。
其它*.BLL:其它国家和地区的语言驱动程序,可以不要。
DataBump.EXE、DataBump.HLP、DataBump.CNT:数据库数据转移工具及帮助文件,可以不要。
Localsql.HLP、Localsql.CNT:SQL查询语句帮助文件,可以不要。
Sqllnk32.HLP、Sqllnk32.CNT:SQL连接帮助文件,可以不要。
在根据需要选择文件后,还要写注册表文件。这个应该不成问题,可以手工设置,但最好在程序中设置,在发现注册表中没有相应键值时写入,用TRegFile对象用不了几行代码的。需要设置的注册表键值有(在调用数据库操作前需要有正确的键值存在):
数据驱动程序所在目录的设置:
HKEY_LOCAL_MACHINE/Software/Borland/Database Engine/DLLPATH(字符串值)
语言驱动程序所在目录的设置:
HKEY_LOCAL_MACHINE/Software /Borland/BLW32/BLAPIPATH(字符串值)
语言驱动程序文件名:HKEY_LOCAL_MACHINE/ Software/Borland/BLW32/LOCALE_LIB#(字符串值)
 其中#为编号,按顺序为0、1、2、3......如:
 HKEY_LOCAL_MACHINE/Software/Borland/
BLW32/LOCALE_LIB0="fareasst.bll"
 HKEY_LOCAL_MACHINE/Software/Borland
/BLW32/LOCALE_LIB1="usa.bll"
就这些了,按此办法即可有效减少BDE驱动程序的大小,例如只用TTable控件操作Paradox数据库,则只要Idapi32.dll、Blw32.dll、Idr20009.dll、Fareast.bll、Usa.bll、Idpdx32.dll六个文件即可。
这些文件可放在任何一个目录,只要在注册表指明即可。OK,BDE由9M多减到不到2M,ZIP一下就700多K了,比原来的应用系统减少了不少吧。
 
楼上说得都不错,还可以考虑用ADO(一般系统自带,不用安装)
或者IBTERBASE也不错的(不用BDE,不安装完整IB,只需复制4个系统文件,压缩后小于1M)
 
谢谢大家的帮助,对于这个问题我觉得jack2000说的最彻底,对我的帮助最大,
所以我把大部分的分数给了他,总共为50分,jack2000得35分,其它5人平分剩余
的分数。因为刚来这里,比较“穷”,所以分数比较低,请大家原谅:)
 
多人接受答案了。
 
这个问题基本算是结束了,但是我最近用EXESCOPE这个工具打开我编译的exe文件,发现
里面附带了很多我没有用到的位图,如btnOK,btnCancel等,这部分内容如何优化呢,还有
一些string,都是英文的,这个是不是设计到delphi的资源汉化的问题了呢?

eg: String-4068
------------------
65072,Recursive calls not allowed
65073,Too many arguments
65074,Wrong arguments for %s
65075,Unknown type
65076,True
65077,False
65078,Evaluator not prepared
65079,Missing argument for %s
65080,Conversion error
65081,Division by Zero
65082,Invalid format or value specified
65083,Invalid argument to SQRT function
65084,Invalid use of NOT
65085,OLE error %.8x
65086,Method '%s' not supported by automation object
65087,Variant does not reference an automation object
 
后退
顶部