呼唤高手,数据库程序发布时怎么只用一张软盘装下?(50分)

  • 主题发起人 主题发起人 tuer
  • 开始时间 开始时间
T

tuer

Unregistered / Unconfirmed
GUEST, unregistred user!
我在给下属单位(有几十个)做一个简单的数据表浏览、打印程序(使用BDE),选择delphi
做就是考虑到不管他们的机器是什么情况都可用,但我突然发现,在没有安装过delphi的机器
上会发生错误,提示好象说“数据库驱动程序BDE没有安装”,程序自然无法使用了(好沮丧)
,我查了查即使是精简的BDE驱动程序也有2M之巨,我是想让下属单位用一张软盘就可拷走的,
现在怎么办呢,总不能让别人都去配个优盘吧,delphi能不能解决这个问题呢,呼唤高手指点!
 
精简Delphi数据库应用系统-定制BDE驱动程序
             深圳 王 发 军
  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了,比原来的应用系统减少了不少吧。

  以上程序在PWIN98+DELPHI3.0下调试通过。
 
我读过这篇文章,我的程序已经1M多了,就算是精简的ZIP的700多K的BDE加上也超出了一张盘
了,怎么拷给别人?
 
2张软盘:)
或用刻录盘,有的比软盘还便宜。
 
下属单位好多都是40多岁的大嫂,对计算机是浆糊脑袋,不能搞复杂了,就只能一张盘!
我原以为delphi多么强大,不象fox做个程序在别的机器上非要平台支持,想不到delphi也...
 
如果只是做一个简单的数据表浏览、打印程序,那么用ADO是最佳的选择。只要是WIN98SE
以后的系统,都不用再装数据库的驱动了(微软在这时候让人觉得可爱)。再把你的程序用
UPX压缩一下又省下了60-70%的空间。
有一点你没讲清楚,你用的是什么数据库,如果是DBF那么用halcyon是最好的选择,如果
没有限制,那么TINYDB,DISAM也可在选择之列。
 
你不会不用BDE吗, 呵呵,
 
如果你不想改动程序,一个可行的简单办法是用Aspack压缩所有的exe和dll。

http://service.lonetear.com/delphi/dispdoc.asp?id=409
 
用的是.dbf自由表
下属单位好多旧机器用的是win95,ado行不行啊,如果行,连接字符串怎么写啊?大哥们...

to:louhong
小弟是个菜鸟,halcyon是什么呀?怎么用啊?,高手好事做到底,教人教会啊!


 
用刻录盘吧!
 
我重复一遍:

如果你不想改动程序,一个可行的简单办法是用Aspack压缩所有的exe和dll。这样做至少可以
把体积减小到原来的1/2到1/3

http://service.lonetear.com/delphi/dispdoc.asp?id=409
 
我想让她们能直接在软盘上用,所以不可以用压缩之类,你们想象不出那些大嫂们有多笨,
我只能做成傻瓜程序,这也是我上司严格要求的!
 
Aspack压缩后的exe和dll可以和没压缩前一样用,不需要额外的工作,你试一下就知道了。
 
连halcyon和ASPACK都不知道,看起来真是个新手。halcyon是在Delphi下无需BDE的DBF数据
库的驱动控件,用它作的程序发布时只需要编译好的应用程序和所用的数据库文件即可。
建议你到
www.playicq.com
里注册一下,里面就有下载。
我有一个用它作的简单的查询、编辑的程序,如果你打算用它,并且想要的话,我可以发给
你。不管你用不用它,我认为以你的情况,在作好程序后用UPX或ASPACK(个人比较偏好UPX)
压缩一下是必要的,这样可以节省许多空间,在总共一张软盘的空间里是很可观的。
 
我要啊,高手!有学习的机会是很难得的呀,多谢!
e_mail:turendeng@sina.com
 
高手的称呼不敢当,那个程序很简单。已发给你,查收!
 
多人接受答案了。
 
后退
顶部