Array
(
)

Access violation ao fechar aplicação

Cristianojedi
   - 03 dez 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:

#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:

Access violation at address F5ECC5E9. Read of address F5ECC5E9.

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!!!


Edilcimar
   - 03 dez 2005

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


Cristianojedi
   - 04 dez 2005

Obrigado, Edilcimar!!!

Suas dicas foram bastante úteis para mim.

Consegui resolver o problema creando o form da seguinte maneira:

#Código

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


Cristiano Mário