Solved

Borland Database Engine (Error $2108)

Posted on 2002-03-28
9
57,486 Views
Last Modified: 2009-10-19
In my Delphi 3 application, I have TDBGrid, TDatabase and TDataSource components.  When I compile the project to an EXE, and then give the EXE to a friend to use on their own PC, they get the following error when they launch the program:

An error occured while attempting to initialize the Borland Database Engine (Error $2108)

I realize that the problem is that the BDE engine is not installed on my friend's PC.  That's not really a big problem, since the table/database is not the main focus of the program, and only serves a minor function.  He won't miss much if the table is not available.

However, it is a bit annoying for him that this error appears every time he launches the program.

My question...  How can I prevent (exception trap) this error message so that the error message does not appear?  And 'no', I don't want an Expert to reply, "Install the BDE engine!"

Assuming I don't install the BDE engine for my friend, how can I prevent the error from appearing?  Is there any way to keep the error from appearing withOUT installing BDE on his PC?

If so, how?

Thanks.
0
Comment
Question by:Kapusta
9 Comments
 
LVL 1

Expert Comment

by:Alone
ID: 6904493
There are three ways to install BDE:
  - using Delphi disk
  - making own install pack
  - from command line ;-)

I thing third way is simplest. Try to extract bdeinst.dll from bdeinst.cab in your BDE directory by typing following command:

  extract <YourDrive:\YourPath>bdeinst.cab bdeinst.dll

If your friend has Windows NT (2000, XP) use expand command instead of extract.

After extracting, start BDE installation:

  regsvr32 bdeinst.dll

and follow the screen instructions.

This BDE redistributable pack install only local drivers. If you are using SQL links you must install required drivers manually or use other way to install BDE
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 6904623
?
i've a car, there is no engine in,
how to get the car drive without installing the engine?

its not really the main problem,
because i want only to hear the sound.

(just impossible)

you've to install the bde

meikl ;-)
0
 

Author Comment

by:Kapusta
ID: 6904944
>> And 'no', I don't want an Expert to reply, "Install the BDE engine!"  <<

I don't know how much clearer I could have made it...
0
 
LVL 1

Expert Comment

by:JDN
ID: 6905627
Kapusta,

Your program can of course run on a pc without the BDE installed, but only if no database component will be accessed or initialized.
You can trap any BDE error with a TRY...EXCEPT, but you need to know exactly where the error is raised. Therefore the best thing you can do is to launch the program yourself in your compiler, but without BDE. You can temporary rename the \Program Files\Common Files\Borland Shared\BDE folder (assuming your BDE is installed there). Now you can simulate and locate the error your friend is seeing when the program is lauched, and program some traps there.

Hope this will help.
JDN
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 44

Expert Comment

by:CrazyOne
ID: 6906085
Does not seem to be any need for the TDBGrid, TDatabase and TDataSource components if you are not going to install the BDE. Why not just remove the components.

Chances are the TDatabase component is generating the error.


The Crazy One
0
 

Author Comment

by:Kapusta
ID: 6906119
>> Does not seem to be any need for the TDBGrid, TDatabase and TDataSource components if you are not going
to install the BDE. <<

I never said that there was no need for the components.  My friend is not the only one running the app.  I am using the app on my PC, which has the BDE.  I use the table.  My friend has no need for the table.  I have no desire to write 2 versions of the program.  Therefore all I want to do is suppress the error message for those users with BDE installed.
0
 

Author Comment

by:Kapusta
ID: 6906122
>> for those users with BDE installed. <<

Typo correction:

for those users withOUT BDE installed.
0
 

Author Comment

by:Kapusta
ID: 6906141
>> You can trap any BDE error with a TRY...EXCEPT, but you need to know exactly where the error is raised.
Therefore the best thing you can do is to launch the program yourself in your compiler, but without
BDE. You can temporary rename the \Program Files\Common Files\Borland Shared\BDE folder <<


I have renamed the BDE folder as per your suggestion.  I then ran the code in the IDE.  The error occurs on the Table1.Open line.  Adding Try/Except, however, does not suppress the error window.  When compiled to EXE, the same error message window appears.

Here's the current code...

     Database1.Open;
     try
          Table1.Open;
     except
          // BDE engine not installed
                // Error window appears
     end;
0
 
LVL 44

Accepted Solution

by:
CrazyOne earned 50 total points
ID: 6906185
Ok then look for this registry setting

HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine

DLLPATH

If the key doesn't exist then the BDE is not insatalled. If the Key does exist then check that the path exits that the above key is pointing to. Then see if the file idapi32.dll exists. If a false is returned on any one of these checks then in your code set it up to not use the components in question. In other words don't open the table or call on the TDatabase or TDBGrid component.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now