I’ve developed a database using Microsoft Access, exporting the files to a Paradox 5 format. Now, the application I’ve developed that utilizes this database is currently running on two machines. The first machine, which I used to develop the application, is running Access and Delphi 2. The other machine is running Delphi 2, but not Access. Previously, the application ran properly on a third machine, also running Access and Delphi 2. Now, when I place the compiled application on the third machine, or any other for that matter, I receive the following error message:
Exception EDBEngineError in module ROCKWELL.EXE at 000432F4. Invalid file name.
However, the BDE Configuration utility reports that the path for the database alias, in addition to the table/file names, is correct, and that the alias is properly named. In addition, I’ve developed a quick and dirty InstallShield setup program that properly installs the program files and database tables and configures the BDE and alias. However, when using this setup program, I still get the same error.
The two machines that the program is running on differ only by the software installed, and all the machines that I’ve tried either to install the application via the setup program or copy the files directly refuse to run the program.
Is it something in the BDE, my code, or the hardware that is causing the invalid file name errors? I had the application working for a while on various machines, and after switching from the Database Desktop to Microsoft Access, it refused to run on one of the machines. It’s been a nightmare ever since. However, I must stress that it runs properly on the machine that I developed both the database and the front end on, as well as another machine that only runs Delphi 2. I’m at my wits end with this problem, so any and all help would be greatly appreciated. Thank you in advance.
This question is tough to answer because it could be a few different things. Let’s look at a couple to see if they’ll get you on your way to figuring it out.
1) On the surface, it seems as if you might have a BDE problem. Do the configurations on all the machines that you installed the application on match the BDE configuration on your machine? You’d be wise to check that out. If there are any discrepancies, correct them, then try to run the program again.
2) You should probably trace the error to the spot in your code where the error occurs. Just set a breakpoint before the place that you know it’s happening, then use F7 or F8 to step through the code. Once you get to the line where the error occurs, you’ll need to create an exception handler to trap the EDBEngineError so you can get extended messaging out of the error. Here’s how:
try except on E: EDBEngineError do raise Exception.Create(E.Message); end;
E: is a temporary variable that points to the error object. You can use the temporary variable to interrogate the exception object in more detail. E.Message is a property that should hold more in-depth information about what occurred to cause the exception in the first place.
Once you’ve got the extended information, you can take action?what that action is though, I’m not sure.
3) It seems to me that you might just be pointing to the wrong file, which is not accessible by the installed applications. Have you checked your aliases or path information that you supply to your data aware components?