Как узнать - установлена ли BDE
|
Вариант 1.Проверить реестр:
with TRegistry.create do begin Rootkey := HKEY_LOCAL_MACHINE; OpenKey('SOFTWARE\BORLAND\DATABASE ENGINE', false); CFGFile := ReadString('CONFIGFILE01'); Free; end;
| Вариант 2.Следующая функция получает структуру 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('ENGINE VERSION=%d', [Result.iVersion])); Add(Format('INTERFACE LEVEL=%d', [Result.iIntfLevel])); Check(DbiDateDecode(Result.dateVer, Month, Day, Year)); Add(Format('VERSION DATE=%s', [DateToStr(EncodeDate (Year, Month, Day))])); Check(DbiTimeDecode(Result.timeVer, iHour, iMin, iSec)); Add(Format('VERSION TIME=%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;
| Возможные резултаты (отображаемые в memo-поле):
ENGINE VERSION=500 INTERFACE LEVEL=500 VERSION DATE=09.06.98 VERSION TIME=17:06:13
| Вариант 3.IsBDEExist := (dbiInit(nil) = 0)
|