因一个小软件中需要操作另外一个大型软件的数据库(paradox)使用ODBC连接("Driver={Microsoft Paradox Driver (*.db )};dbq=" + dbPath + ";defaultdir=" + dbPath + ";CollatingSequence=ASCII;"),但在部署的时候又不想带BDE安装(原因是BDE没有提供单独的安装程序,也许是我没有找到,而都是整合在BCB或者delphi中的,给客户的时候总不能带100多M的安装程序吧),于是就按照网上介绍的方法,只拷贝一些文件,然后在安装的时候修改注册表来达到BDE驱动的目的(另外在网上流传着一个所谓的BDE驱动就是那个叫顺和达什么的,好像也是这种方法,在新系统下安装这个驱动也不行),但是这么做在我开发的这个环境下没问题(因我曾经安装过delphi7.0,在新系统下安装delphi7后访问数据库也没有问题。),换一个新系统就出现访问失败,错误信息是“Unexpected error from external database driver (11270)”。特此将该问题发在PB版,这里都是Borland的忠实拥趸,请各位不吝赐教,解决者100分相谢。附:我搜索到的BDE打包方法:
用Delphi编写的数据库程序在发布时需要同时发布BDE(Borland Database Engine),但BDE占用空间较大(不同版本大小不一,最新的Delphi5有17M多),远比一般的程序本身要大。但实际上,有些文件用不上的,所以我们可以在发布时用Delphi附带的InstallShield制作安装程序来定制BDE驱动,这样可以精简我们的数据库应用程序。实现与应用参考Bde32.HLP中"Introduction to Borland Database Engine"下的"Core BDE Files",可以得知BDE的关键文件及其作用,可以以此作为依据来精简BDE驱动程序。下面是各个文件的作用:一、不可缺少的文件Blw32.dll:语言驱动函数库。Idapi32.dll:BDE基本函数库。Fareast.btl、Usa.btl:远东语言及美国语言驱动程序,对中文软件不可缺少。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 provider驱动程序函数库,如果不用TProvider控件,可以不要。Idqbe32.dll:QBE驱动程序函数库,如果不用Query By Example,可以不要。Idsql32.dll:SQL查询驱动程序函数库,如果不用TQuery进行查询,可以不要。Idapi32.cfg:BDE配置文件,如果程序中没有特殊要求,可以不要。也可以在BDE管理器中设置正确后再分发。四、其它文件(一般不用)其它的*.BTL:其它国家和地区的语言驱动程序,可以不要。BDE32.HLP、BDE32.CNT:BDE帮助文件,可以不要。BdeAdmin.exe、BdeAdmin.HLP、BdeAdmin.CNT:BDE管理器及帮助文件,如果不会发生要求软件用户自己配置BDE的情况时,可以不要。DataBump.EXE、DataBump.HLP、DataBump.CNT:数据库数据转移工具及帮助文件,可以不要。Localsql.HLP、Localsql.CNT:SQL查询语句帮助文件,可以不要。Sqllnk32.HLP、Sqllnk32.CNT:SQL连接帮助文件,可以不要。在根据需要选择文件后,还要写注册表文件。可以手工设置,但最好在程序中设置,需要设置的注册表键值有(在调用数据库操作前需要有正确的键值存在,各对应键值在Win9x/NT/Win2000下均相同):数据驱动程序所在目录的设置:HKEY_LOCAL_MACHINEEngine(字符串值)语言驱动程序所在目录的设置:HKEY_LOCAL_MACHINE(字符串值)语言驱动程序文件名:HKEY_LOCAL_MACHINE Software_LIB#(字符串值) 其中#为编号,按顺序为0、1、2、3......如:HKEY_LOCAL_MACHINE_LIB0="fareasst.btl" HKEY_LOCAL_MACHINE_LIB1="usa.btl"做完这些就足够了,按此办法即可有效减少BDE驱动程序的大小,例如只用TTable控件操作Paradox数据库,则只要Idapi32.dll、Blw32.dll、Idr20009.dll、Fareast.btl、Usa.btl、Idpdx32.dll六个文件即可。这些文件可放在任何一个目录,只要在注册表指明即可。BDE由17.4M减到1.48M,压缩一下就只有几百K了,这使程序大为减小。
解决方案 »
- koda ImgEdit使用方法或者开发帮助
- 为什么我下午发的贴子,现在没了呢,而且信誉分扣了很多
- ClientDataSet.Locate 定位的时候遇到一个奇怪的问题
- 有没有CSDN论坛页面左边的导航栏这种风格的treeview?不喜欢delphi中的那个treeview
- 如何在stringgrid中通过键盘输入找到最近的记录?
- 帮我解决一下问题吧?
- 请问在treeview中如何定位某个节点?在线等,解决就马上揭帖。
- 用DELPHI开发的一个小软件,数据库是用ACCESS的,能否在刻录到光盘后直接运行而不需要安装?
- 如何可以使得中文字符串按音序排序啊(要比较大小的方法就行了)
- 请教高手!!关于table的filter属性的
- 周末了,好几千分,散落一下,看下周花落谁家?规则是大家都出一些冷笑话,看谁的最冷,200分就给谁了!嘿嘿
- 在Delphi中如何捕捉所有的异常?
2、微软提供的内置的paradox驱动的问题。但是从网上我都没有找到满意的解决办法。现在在开发阶段使用的是安装delphi环境或者BCB环境,到发布的时候怎么办啊。。
我以前也试图用你主帖的方法打包,但是经常出现莫名其妙的错误。后来不用paradox了也就没有再研究过。
继续找寻答案。。
回头看看其实问题很简单,但是由于对 paradox数据不熟悉,并且忽视了那个程序自身对数据库的独占性,走了不少弯路,浪费了不少时间。唉,惭愧啊。从CSDN上各位的回答上看,现在用Paradox的真真的不多了。结贴。友情up的都有重分,谢谢大家!
好么 ?我可以付些报酬。
联系我 [email protected] qq :345060434 大海
手机 13063513343 张伟