Проверка наличия BDE |
Previous Top Next |
Code: |
unit Findbde;
interface
implementation uses
Controls, SysUtils, WinTypes, WinProcs, Dialogs;
var
IdapiPath: array[0..255] of Char; IdapiHandle: THandle;
initialization
GetProfileString('IDAPI', 'DLLPath', 'C:\', IdapiPath, 255); {следующие строки "изолируют" первый путь к каталогу из IdapiPath в случае, если их несколько} if Pos(';', StrPas(IdapiPath)) <> 0 then begin StrPCopy(IdapiPath, Copy(StrPas(IdapiPath), 1, Pred(Pos(';', StrPas(IdapiPath))))); end; IdapiHandle := LoadLibrary(StrCat(IdapiPath, '\IDAPI01.DLL')); if IdapiHandle < HINSTANCE_ERROR then begin if MessageDlg('ОШИБКА: Borland Database Engine (IDAPI) не найдена' + 'перед следующей попыткой ее необходимо установить....', mtError, [mbOK], 0) = mrOK then Halt end { IDAPI в системе не установлена } else begin FreeLibrary(IdapiHandle); { IDAPI Установлена в системе } end;
end. |
©Drkb::02487
Взято из Советов по Delphi от Валентина Озерова
Сборник Kuliba
Способ 1:
Следующая функция получает структуру SysVersion и записывает результаты в stringlist.
Code: |
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; |
Вызов этой функции выглядит следующим образом:
Code: |
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
©Drkb::02488
Способ 2:
Читаем ключ в реестре:
Code: |
RootKey := HKEY_LOCAL_MACHINE; OpenKey(`SOFTWARE\Borland\Database Engine`, False); try s := ReadString(`CONFIGFILE01`);
//BDE установлена finally CloseKey; end; |
©Drkb::02489
Способ 3:
Можно попробовать установить BDE
Code: |
IsBDEExist := (dbiInit(nil) = 0)
|
PS: Последний способ более предпочтителен, так как анинсталлер мог удалить BDE-файлы, но оставить в реестре ключ :)
©Drkb::02490
Взято из http://forum.sources.ru