如何从程序中判断系统中是否安装了BDE!(10分)

  • 主题发起人 lhlh_0_0
  • 开始时间
L

lhlh_0_0

Unregistered / Unconfirmed
GUEST, unregistred user!
如何从程序中判断系统中是否安装了BDE!
 
回答:
下面给出的函数将得到一个SysVersion的结构,并将最后结果写入stringlist中。
代码如下:
uses dbierrs, DBTables;
...

function fDbiGetSysVersion(SysVerList: TStringList): SYSVersion;
var
Month, Day, iHour, iMin, iSec: Word;
Year: SmallInt;
begin
Check(DbiGetSysVersion(Result));
if (SysVerList <> nil) then
begin
with SysVerList do
begin
Clear;
Add(Format('数据引擎版本号=%d', [Result.iVersion]));
Add(Format('接口级=%d', [Result.iIntfLevel]));
Check(DbiDateDecode(Result.dateVer, Month, Day, Year));
Add(Format('版本日期=%s', [DateToStr(EncodeDate
(Year, Month, Day))]));
Check(DbiTimeDecode(Result.timeVer, iHour, iMin, iSec));
Add(Format('版本时间=%s', [TimeToStr(EncodeTime
(iHour, iMin, iSec div 1000, iSec div 100))]));
end;
end;
end;


下面是对该函数的调用方法:

var hStrList: TStringList;
Ver: SYSVersion;
begin
hStrList:= TStringList.Create;
try Ver := fDbiGetSysVersion(hStrList); except
ShowMessage('BDE not installed !');
end;
ShowMessage(IntToStr(Ver.iVersion));
Memo1.Lines.Assign(hStrList);
hStrList.Destroy;
end;

下面是可能显示的结果:

数据引擎版本号=500
接口级=500
版本日期=09.06.98
版本时间=17:06:13

补充另外两种办法:

1. 从注册表中读取:
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(`SOFTWARE/Borland/Database Engine`, False);
try
s := ReadString(`CONFIGFILE01`);

//BDE 已经安装
finally
CloseKey;
end;

2. 先尝试初始化BDE,成功则说明安装了DBE。

IsBDEExist := (dbiInit(nil) = 0)

PS: 我更倾向于使用第二种方法,因为有时御载BDE时并未完全将注册表中的键删干净:)
 
呵呵,nod,很完整
 
同意楼上的说法
 
IsBDEExist := (dbiInit(nil) = 0)
今天刚刚试过!!
 
接受答案了.
 
顶部