回答:
下面给出的函数将得到一个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时并未完全将注册表中的键删干净