哪位大師能救救命!!!好好一套程一下被它糟塌的不成樣子!!!送100分啦

myperry 2001-11-23 02:46:44
我用DELPHI6寫了一個程序my.exe,在寫時用到了Table1控件其屬性如下:
DatabaseName:='c:\hrpb';
TableName:='l_flpsh.dbf';
Active:=True;
程式寫完在我的電腦上運行沒問題,但拷到其它電腦上一試,它提示要
裝BDE Administrator。這下麻煩可大了,本來我的程序很小還不到1.2MB
如果要在安裝成程序中加入BDE,安裝程式一下變成17MB,好好一套程一下
被它糟塌的不成樣子。
我的程序在運行時并不需要對BDE做任何設置!!!
請問哪位大師能救救命,邦我解決一下my.exe在其它電腦上運行的問題!
1. 用什么方法能保証程序既能運行又不會做的很大。
2. 如果上面的方法行不通是否可以走其它的路,我的數据源為'c:\hrpb\l_flpsh.dbf'。
...全文
208 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
myperry 2001-11-30
  • 打赏
  • 举报
回复
to: cobi(我是小新,我只有5岁)我的程序共有三個文件(都在c:\hrpb目錄下)
1. my.exe (應用程序)
2. l_flpsh.dbf (vf表單)
3. l_flpsh.cdx (vf表單的索引)
我把以下三類共7個文件都拷貝到了c:\hrpb目錄下:
一:不可缺少的文件
1.Blw32.dll
2.Idapi32.dll
3.fareast.btl
4.usa.btl
5.idr20009.dll
二:數据庫驅動程序
6.Iddbas32.dll
三:其它驅動程序和配置文件
7.idsql32.dll

這樣在c:\hrpb目錄下就一共有10個文件了。
我把c:\hrpb整個目錄拷貝到另外一台電腦的c:\下再運行my.exe程序,結果提示錯誤。
Exception EDBEngineError in module my.exe at 000862BE
Anerror occurred while attempting to initialize the Borland Database Engine(error$3E06)


問題一: 請問出現以上錯誤是為什么,應該如何修改?
問題二: 如何在一台電腦中從來未安裝Delphi軟件的話,在注冊名表的Software中
就不可能有Borland項目。請問您在上面的例子中為什么要用以下語句:
if not OpenKey( 'Software\Borland\BLW32', False ) then

cobi 2001-11-27
  • 打赏
  • 举报
回复
不能运行肯定是有报错信息的,你的信息是什么呢?我明天可以详细回复你
myperry 2001-11-27
  • 打赏
  • 举报
回复
有沒有人能講的具體一點,今晚我送分!
myperry 2001-11-23
  • 打赏
  • 举报
回复
to: rzh(小江西)
我用的是delphi6,安裝程式是express3.03版,能否講的具体一點。
rzh 2001-11-23
  • 打赏
  • 举报
回复
用Delphi自带的安装程序,制作安装文件。它会将你只需要的那部分文件打包,我看了一下,BDE好像只要求2个文件,这样的话,你的文件应该不会再有多大了。
myperry 2001-11-23
  • 打赏
  • 举报
回复
~~~~~~~~~~~~~~
myperry 2001-11-23
  • 打赏
  • 举报
回复
to: cobi(我是小新,我只有5岁)

我用的是繁体win98+delphi6.0為什么找不到Fareast.bll和usa.bll文件?
我把程序改為如下所示,為什么還不能在其它机子上運行。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, Registry;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
procedure InitBde;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.InitBde;
var
DataDirectory : string;
ARegistry : TRegistry;
begin
DataDirectory := ExtractFilePath( Application.ExeName );
DataDirectory := DataDirectory+'bde\';
ARegistry := TRegistry.Create;
with ARegistry do
begin
RootKey := HKEY_LOCAL_MACHINE;
if not OpenKey( 'Software\Borland\BLW32', False ) then
begin
OpenKey( 'Software\Borland\BLW32', True );
WriteString( 'BLAPIPATH', DataDirectory );
end;
CloseKey;
RootKey := HKEY_LOCAL_MACHINE;
if not OpenKey('Software\Borland\Database Engine',False) then
begin
OpenKey('Software\Borland\Database Engine',True);
WriteString( 'DLLPATH', DataDirectory );
end;
CloseKey;
Destroy;
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
InitBde;
end;

end.
王集鹄 2001-11-23
  • 打赏
  • 举报
回复
ADO通过ODBC可以连接
liang_z 2001-11-23
  • 打赏
  • 举报
回复
TO:myperry(綠草原)
有高人在我不插嘴了!
我学!
我收藏!
myperry 2001-11-23
  • 打赏
  • 举报
回复
各位大師先謝了!
讓我先試一下,等會再送分!!!
zfmich 2001-11-23
  • 打赏
  • 举报
回复
一种不是很馊的方法,直接打开文件,定位根据偏移量读取或写入记录。
myperry 2001-11-23
  • 打赏
  • 举报
回复
to: leeky(雅痞·千年虫)
你是不是說: 如果用了BDE就只能任它糟塌了,1.2MB的程序非要讓它搞到17MB,難受啊!!!

TO: zswang(伴水)(伤心中)/liang_z(千山一刀之忍者神龟)
請問ADO中怎么連FOXPRO表?????????
cobi 2001-11-23
  • 打赏
  • 举报
回复
---- 一、不可缺少的文件
---- 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连接帮助文件,可以不要

//注册表

reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('software\borland\blw32', false);
reg.WriteString('blapipath', 'bde所在路径'); //设置语言驱动程序路径
reg.CloseKey;
reg.OpenKey('software\borland\Database Engine', false);
reg.WriteString('dllpath', 'bde所在路径');
reg.CloseKey;
reg.Free;
ChocoboY 2001-11-23
  • 打赏
  • 举报
回复
bde包不会太大,你装一些精简的10文件;
参考以下文档
一、不可缺少的文件


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了,比原来的应用系统减少了不少吧。


cobi 2001-11-23
  • 打赏
  • 举报
回复
你的问题只是要在其他机器上分发一下bde即可。
而且分发bde的也不用全部文件都拷贝过去,一般的1M左右
Delphi要求将所有的可再分发BDE中的文件全部提供给它的用户。但为了节省空间,您也可以只安装执行应用程序所要的相关驱动程序。例如,若应用程序只需存取dBASE文件,则无需配置PARADOX的驱动程序。
关于分发的其它内容,请参阅缺省安装在Delphiιdoc目录中的delploy.txt文件。一般包含下列文件:
文件名说明
IDAPI01.DLLBDEAPIDLL
IDABAT01.DLLBDEBATCHUTILITIESDLL
IDQRY01.DLLBDEQUREYDRIVEDLL
IDPDX01.DLLDEIPARADOXDRIVEDLL
IDDBAS01.DLLBDEDBASEDRIVEDLL
IDR10009.DLLBDERESOUSEDLL
ILD01.DLL
LANGUAGE
DRIVEDLL
TUTILITY.DLL
BDETUTILITYDLL
BDECFG.EXEBDECONFIGURATIONUTILITY
BDECOFG.HLPBDECONFIGURITIONUTILITYHELP
IDAPI.CFGBDE(IDAPI)CONFIGFILE

因为你是分发bde的,所以要在代码中实现bde的注册:
procedure InitBde;
var
DataDirectory : string;
ARegistry : TRegistry;
begin
DataDirectory := ExtractFilePath( Application.ExeName );
DataDirectory := DataDirectory+'bde\';
ARegistry := TRegistry.Create;
with ARegistry do {创建一个TRegistry对象实例 }
begin
RootKey := HKEY_LOCAL_MACHINE;{指定根键为HKEY_LOCAL_MACHINE}
if not OpenKey( 'Software\Borland\BLW32', False ) then
begin
// showmessage('key 1'); {写入BDE语言驱动程序所在的目录,即当前程序目录 }
OpenKey( 'Software\Borland\BLW32', True );
WriteString( 'BLAPIPATH', DataDirectory );
end;
CloseKey; {关闭主键,同时将信息写入注册表}
RootKey := HKEY_LOCAL_MACHINE;
if not OpenKey('Software\Borland\Database Engine',False) then
begin
// showmessage('key 2');
OpenKey('Software\Borland\Database Engine',True);
WriteString( 'DLLPATH', DataDirectory );
end;
CloseKey; {关闭主键,同时将信息写入注册表}
Destroy; {释放内存 }
end;
end;

leeky 2001-11-23
  • 打赏
  • 举报
回复
你用到了BDE当然要安装BDE,不然你哪能.first,.edit,.post,.append等等。
解决方法:
你可以写个程序把fox表转化为你自己的记录文件,再对记录文件进行操作吧。
crapex 2001-11-23
  • 打赏
  • 举报
回复
ADO组件支持Foxpro的表吗?我不知道呢。
liang_z 2001-11-23
  • 打赏
  • 举报
回复
用TTable一定要带上BDE的!
liang_z 2001-11-23
  • 打赏
  • 举报
回复
用ADO
王集鹄 2001-11-23
  • 打赏
  • 举报
回复
ADO
加载更多回复(1)

5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧