[DUG] Strange access error on application close...

David Brennan dugdavid at dbsolutions.co.nz
Wed Aug 9 14:52:08 NZST 2006


I can't really help with why you are getting this error but I do recall that
we had problems (ie A/Vs) with our application if it exited without calling
Application.Run first in a very similar situation to yours (ie login being
cancelled).

I never worked out why beyond determining that it didn't happen if we called
Application.Run and then Application.Terminate (actually slightly more
complicated in our case but it boils down to that).

Your situation with changing the text avoiding the A/V makes very little
sense but it may just be a symptom. Your real problem may be something
internal to Delphi getting upset with the Application not being set to Run.

Just a thought.

David.


-----Original Message-----
From: delphi-bounces at ns3.123.co.nz [mailto:delphi-bounces at ns3.123.co.nz] On
Behalf Of Dave O'Brien
Sent: Wednesday, 9 August 2006 11:27 a.m.
To: NZ Borland Developers Group - Delphi List
Subject: [DUG] Strange access error on application close...

Application... (Using DBGo)
begin
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TfrmLogin, frmLogin);
  if frmLogin.ShowModal = mrOK then
  begin
    seID := 0 ;
    datamod.ADOQuery.SQL.Text := 'Select seID from Security...' ;
    datamod.ADOQuery.Open ;
    try
      if not datamod.adoQuery.eof then
        seID := datamod.ADOQuery.FieldByName('seID').AsInteger
      else
        ShowMessage('Invalid Username/Password') ;
    finally
      datamod.ADOQuery.Close ;
    end ;
    if seID <> 0 then
      Application.Run ;
  end ;
end.

With the above concept code I am getting a strange error.
"Access violation at address 00490742 in module'test.exe'. Read of
address 00C628C8"

The error occurs if the login is cancelled, does not occur if the login
is OK'd but the username/password is not found, so it has nothing to do
with "Running" the app.

If I change the end of the file to:

    if seID <> 0 then
      Application.Run ;
  end
  else
    datamod.ADOQuery.SQL.Text := 'Anything but a blank string...' ;
end.

It now exits fine...
Any idea why I have to assign some text to the query or the app bombs on
exit? There are multiple TADOQuery's in the data module, so why don't I
have to assign something to each of them? Assigning a value only to that
query at design time also resolves the problem.

Cheers,
Dave.


_______________________________________________
Delphi mailing list
Delphi at ns3.123.co.nz
http://ns3.123.co.nz/mailman/listinfo/delphi



More information about the Delphi mailing list