How to Get the Installed BDE Version

For many reasons you may need the installed BDE (Borland Database Engine) version. One of them (the main one probably) is that BDE versions are not always compatible with each other. Therefore you may want to use different code/components at runtime.

Use the code below to determine what version of BDE is installed on the system. The first snippet does not use the registry while the second one does.

1. Without quering the Windows system registry:

var
  BDEVersion: SYSVersion;
...
  DbiGetSysVersion(BDEVersion);
  // BDEVersion.iVersion - BDE version
...

2. With the use of the Windows system registry:

uses
  BDE, Registry, Windows;
...
function GetBDEVersion: string;
var
  hDll: hWnd;
  pFunc: Pointer;
  sIdAPI: string;
  SysVer: SYSVersion;
  SysVerProc: TSYSVerProc;
begin
  Result := '';
  with TRegistry.Create do
    try
      RootKey := HKEY_CLASSES_ROOT;
      if OpenKey('CLSID{FB99D710-18B9-11D0-A4CF-00A024C91936}InProcServer32',
        False) then begin
          sIdAPI := ReadString('');
        CloseKey;
      end;
    finally
      Free;
    end;

  hDll := LoadLibrary(PChar(idapi));
  if hDll <> 0 then
    try
      pFunc := GetProcAddress(hDll, 'DbiGetSysVersion');
      if pFunc <> nil then begin
        SysVerProc := pFunc;
        SysVerProc(SysVer);
        Result := IntToStr(SysVer.iVersion);
        Insert('.', Result, 2);
      end;
    finally
      FreeLibrary(hDll);
    end;
end;

Tags: , , , , , , , , , , , , , ,

No Comments Yet

You can be the first to comment!

Leave a comment

OpenID Login

Standard Login