--- ---

## Answer 1

Your application may use several approaches to databases depending on what is installed on the user's computer. Before you use the BDE you may want to check if it has been installed. If not then you may either ask the user to do so first, else just use something else. The function below (roughly a couple lines of code) checks for BDE presence.

    uses
      Bde;

    function BDEInstalled: Boolean;
    begin
      Result := (dbiInit(nil) = 0);
    end;

A version of this function is available in the DelphiDabbler Code Snippets Database as CheckBDEInstalled.

## Answer 2

    function isbdepresent: boolean;
    var
      IdapiPath: array[0..255] of Char;
      IdapiHandle: THandle;
    begin
      result := false;
      GetProfileString('IDAPI', 'DLLPath', 'C:\', IdapiPath, 255);
      {next lines isolates the first directory path from the IdapiPath in
      case there are more}
      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
        result := false
        {IDAPI is not present on this system}
      else
      begin
        FreeLibrary(IdapiHandle);
        result := true;
        {IDAPI is present on this system}
      end;
    end;

Tip by Brian Bushay, formerly published on the defunct Delphi Pool web site.

## Answer 3

Try to check the registry for the presence of the BDE:

    with TRegistry.create do
      try
        Rootkey := HKEY_LOCAL_MACHINE;
        OpenKey('SOFTWARE\BORLAND\DATABASE ENGINE', false);
        CFGFile := ReadString('CONFIGFILE01');
      finally
        Free;
      end;
    end;

The BDE is installed if CFGFile is not ''.

Tip based on anonymous code formerly published on the defunct Delphi Pool web site.