Access violation ao fechar aplicação

03/12/2005

Olá, boa tarde!!!

Estou implementado Controle de senhas em minha aplicação e está da seguinte forma:

- Coloquei o FrmLogin no Auto-create forms;
- Tirei o FrmPrincipal do Auto-create forms. Antes ele estava no Auto-create forms;
- A propriedade FormStyle dos dois está: fsNormal;
- No botão Logar do FrmLogin, tem o seguinte código:

procedure TFrmLogin.BitBtn2Click(Sender: TObject);
var
  aIdUser: integer;
begin
  if DMPermissoes.VerificaSenha(cboUser.Text, EdtSenha.Text, aIdUser) then
  begin
    Application.CreateForm(TFrmPrincipal, FrmPrincipal);
    try
      FrmPrincipal.IdUser := aIdUser;
      Release;
      FrmPrincipal.ShowModal;
    finally
      FrmPrincipal.Free;
    end;
  end
  else
  begin
    EdtSenha.Text := ´´;
    raise Exception.Create(´Senha inválida´);
  end;
end;


Está criando o FrmPrincipal blz. Só que quando termina esta rotina, no caso quando eu clico em Sair na aplicação, está dando o seguinte erro:

[color=red:93d3ba86d3]Access violation at address F5ECC5E9. Read of address F5ECC5E9.[/color:93d3ba86d3]

Alguém tem idéia do que pode ser? Já quebrei cabeça aqui e não consigo achar o que fazer para finalizar a aplicação sem da este erro.

Estou usando Interbase e Delphi 7 com DBExpress.

Obrigado!!!


Cristianojedi

Respostas

03/12/2005

Edilcimar

o tipo de erro pode ter sido gerado por diversos tipos de problemas, entre eles pode ser citado:
a) o form em si está sendo gerado sem uma chamada de geração dele próprio
b o form está sendo criado antes de algum dos seus componentes estar sendo criado
c) o form está tentando ser criado antes do form de login, tente fazer um teste evitando a criação do form principal
d) o form principal não pode ser showmodal
e) o problema só acontece dentro do delphi, o qual mostra todos os problemas possíveis, tente rodar o exe fora do delphi para ver se o problema persiste
f) se o problema continuar, coloque o código completo para ser analisado


Responder Citar

04/12/2005

Cristianojedi

Obrigado, Edilcimar!!!

Suas dicas foram bastante úteis para mim.

Consegui resolver o problema creando o form da seguinte maneira:

    try
      FrmPrincipal := TFrmPrincipal.Create(Self);
      FrmPrincipal.ShowModal;
    finally
      FrmPrincipal.Free;
    end;


Cristiano Mário


Responder Citar