Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 3 of 3 total
Thread Halt problem
Thu, Sep 25 2008 11:31 AMPermanent Link

"Mauro Botta"
Hi

create a new form , with Engine+database+session edb2.01b5

add a table.

in a FormCreate write :



edbTable.Open;
.....
if xxxxxxx = False then
 begin
 edbTable.Close;

edbDatabase.Close
edbSession.Close
edbEngine.Close

 HALT;
 end;

....

After the Halt procedure program crash with much generic Error.

( with dbisam was all  ok )

i Need close the main program without any spash of main form.

Is there a workaround ( i dont' move this code out of CreateForm )



Thu, Sep 25 2008 12:04 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Mauro,

<< After the Halt procedure program crash with much generic Error. >>

I'll check it out, but I'm not sure if this is specific to EDB because after
you close the TEDBEngine component, the EDB engine is basically not even
available anymore.

--
Tim Young
Elevate Software
www.elevatesoft.com

Mon, Sep 29 2008 12:46 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Mauro,

<< After the Halt procedure program crash with much generic Error. >>

If you don't close the table first, then using Halt will cause an AV.  The
problem is due to the finalization being called for the EDB units *prior* to
the form being destroyed.  That causes the EDB components to try and
shutdown when some of the resources of the engine have already been
destroyed.

This post explains it further:

http://groups.google.com/group/borland.public.delphi.objectpascal/browse_thread/thread/af8d255eede18d01/c7ab12634a547775?lnk=st&q=delphi+finalization+order+halt#c7ab12634a547775

These *do* work:

1) If you close the table first, then there is no problem.

2) If you call Halt from anywhere else beside the FormCreate method, then
there is no problem.

3) If you call Application.Terminate, then there is no problem.

So, you're going to have to go with one of these three workarounds.

--
Tim Young
Elevate Software
www.elevatesoft.com

Image