Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fér@

arrumar um erro no sistema

Recommended Posts

Preciso de ajuda pra arrumar esse erro:

Project Sistema.exe raised exception class EAccessViolation with message 'Access violation at address 004AD276 in module'Sistema.exe'

Ja tentei fazer de tudo pra arrumar ele!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que saber em que ponto gera o erro. Por exemplo: ao abrir o sistema, ou ao clicar em um botão...

 

Sabendo isso, você pode marcar um determinado ponto e ir debugando. Assim fica bem facil de achar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele da o erro depois q passa o splash

antes de chegar na tela de login!!!

mas se eu debuga te ele naum vai aparecer o erro

peq naum aparece linha vermelha!!!!!!

 

agora ta dando outro erro nesse codigo:

begin

MessageDlg('Nome ou senha do usuário inválidos.'+#13+#13

+ 'Se você esqueceu sua senha, consulte '+ #13

+ 'o administrador do sistema', mtError, [mbOK], 0);

EdtSenha.Clear;

EdtSenha.SetFocus;

end

else

begin

FrmLogin.Hide;

FrmMenuPrin.ShowModal;

FrmLogin.Release;

FrmLogin := Nil;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o erro está na tela de login, no onshow ou oncreate desse form

 

Coloque um breakpoint (linha vermelha) no código se você estiver utilizando esses eventos

 

Outro possivel caso, é a chamada de algum evento de outro form ainda não criado

Compartilhar este post


Link para o post
Compartilhar em outros sites

begin
MessageDlg('Nome ou senha do usuário inválidos.'+#13+#13
+ 'Se você esqueceu sua senha, consulte '+ #13
+ 'o administrador do sistema', mtError, [mbOK], 0);
EdtSenha.Clear;
EdtSenha.SetFocus;
end
else
begin
FrmLogin.Hide;
FrmMenuPrin.ShowModal;
FrmLogin.Release;
FrmLogin := Nil;
end;

Essa rotina você verifica se o usuário digitou a senha, correto? onde você faz a verificação da senha? É um DataModule? Esse foi criado antes do Form Login?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele verifica se a senha esta correta

procedure TFrmLogin.BtnOkClick(Sender: TObject);

begin

Dm.tab_Usuarios.Open; // abre a tabela tab_Usuarios

FrmMenuPrin.StatusBar1.Panels[2].Text :=' Usuário:' + FrmLogin.EdtApelido.Text ;

If not (Dm.tab_Usuarios.Locate('UsuApelido', FrmLogin.EdtApelido.Text, [loPartialKey ])) or (Dm.tab_UsuariosUsuSenha.Value <> FrmLogin.EdtSenha.Text) then

 

 

begin

MessageDlg('Nome ou senha do usuário inválidos.'+#13+#13

+ 'Se você esqueceu sua senha, consulte '+ #13

+ 'o administrador do sistema', mtError, [mbOK], 0);

EdtSenha.Clear;

EdtSenha.SetFocus;

end

else

begin

FrmLogin.Hide;

FrmMenuPrin.ShowModal;

FrmLogin.Release;

FrmLogin :=Nil;

end;

 

end;

 

Ele é um splash

foi criado ante pq é a tela de inicialização do sistema

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele verifica se a senha esta correta

procedure TFrmLogin.BtnOkClick(Sender: TObject);

begin

Dm.tab_Usuarios.Open; // abre a tabela tab_Usuarios

FrmMenuPrin.StatusBar1.Panels[2].Text :=' Usuário:' + FrmLogin.EdtApelido.Text ;

If not (Dm.tab_Usuarios.Locate('UsuApelido', FrmLogin.EdtApelido.Text, [loPartialKey ])) or (Dm.tab_UsuariosUsuSenha.Value <> FrmLogin.EdtSenha.Text) then

 

 

begin

MessageDlg('Nome ou senha do usuário inválidos.'+#13+#13

+ 'Se você esqueceu sua senha, consulte '+ #13

+ 'o administrador do sistema', mtError, [mbOK], 0);

EdtSenha.Clear;

EdtSenha.SetFocus;

end

else

begin

FrmLogin.Hide;

FrmMenuPrin.ShowModal;

FrmLogin.Release;

FrmLogin :=Nil;

end;

 

end;

 

Ele é um splash

foi criado ante pq é a tela de inicialização do sistema

 

 

Provavelmente é esse DM que não foi criado, você cria ele antes ou depois da Splash?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

ele verifica se a senha esta correta

procedure TFrmLogin.BtnOkClick(Sender: TObject);

begin

Dm.tab_Usuarios.Open; // abre a tabela tab_Usuarios

FrmMenuPrin.StatusBar1.Panels[2].Text :=' Usuário:' + FrmLogin.EdtApelido.Text ;

If not (Dm.tab_Usuarios.Locate('UsuApelido', FrmLogin.EdtApelido.Text, [loPartialKey ])) or (Dm.tab_UsuariosUsuSenha.Value <> FrmLogin.EdtSenha.Text) then

 

 

begin

MessageDlg('Nome ou senha do usuário inválidos.'+#13+#13

+ 'Se você esqueceu sua senha, consulte '+ #13

+ 'o administrador do sistema', mtError, [mbOK], 0);

EdtSenha.Clear;

EdtSenha.SetFocus;

end

else

begin

FrmLogin.Hide;

FrmMenuPrin.ShowModal;

FrmLogin.Release;

FrmLogin :=Nil;

end;

 

end;

 

Ele é um splash

foi criado ante pq é a tela de inicialização do sistema

 

 

Provavelmente é esse DM que não foi criado, você cria ele antes ou depois da Splash?

 

eu crio depois do splash!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

procedure TFrmLogin.BtnOkClick(Sender: TObject);

begin

Dm.tab_Usuarios.Open; // abre a tabela tab_Usuarios

FrmMenuPrin.StatusBar1.Panels[2].Text :=' Usuário:' + FrmLogin.EdtApelido.Text ;

If not (Dm.tab_Usuarios.Locate('UsuApelido', FrmLogin.EdtApelido.Text, [loPartialKey ])) or (Dm.tab_UsuariosUsuSenha.Value <> FrmLogin.EdtSenha.Text) then

Compartilhar este post


Link para o post
Compartilhar em outros sites

begin

Application.Initialize;

Application.Title := 'Sistema de Contagem Lig Chopp';

Application.CreateForm(TFrmLogin, FrmLogin);

Application.CreateForm(Tfrmmenuprin, frmmenuprin);

Application.CreateForm(TFrmSplash, FrmSplash);

Application.CreateForm(TDM, DM);

Application.CreateForm(TFrmCadPadrao, FrmCadPadrao);

Application.CreateForm(TFrmCadCliente, FrmCadCliente);

Application.CreateForm(TFrmCadFornecedores, FrmCadFornecedores);

Application.CreateForm(TFrmCadCategoria, FrmCadCategoria);

Application.CreateForm(TFrmCadFuncionarios, FrmCadFuncionarios);

Application.CreateForm(TFrmMovVendas, FrmMovVendas);

Application.CreateForm(TFrmMovItensdaVenda, FrmMovItensdaVenda);

Application.CreateForm(TFrmCadItens, FrmCadItens);

 

 

Application.Run;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

begin
  Application.Initialize;
  Application.Title := 'Sistema de Contagem Lig Chopp';
  [u][b]Application.CreateForm(TDM, DM);[/b][/u] --> Crie os DataModules antes de tudo
  Application.CreateForm(TFrmLogin, FrmLogin);
  Application.CreateForm(Tfrmmenuprin, frmmenuprin);
  Application.CreateForm(TFrmSplash, FrmSplash);
  Application.CreateForm(TFrmCadPadrao, FrmCadPadrao);
  Application.CreateForm(TFrmCadCliente, FrmCadCliente);
  Application.CreateForm(TFrmCadFornecedores, FrmCadFornecedores);
  Application.CreateForm(TFrmCadCategoria, FrmCadCategoria);
  Application.CreateForm(TFrmCadFuncionarios, FrmCadFuncionarios);
  Application.CreateForm(TFrmMovVendas, FrmMovVendas);
  Application.CreateForm(TFrmMovItensdaVenda, FrmMovItensdaVenda);
  Application.CreateForm(TFrmCadItens, FrmCadItens);


  Application.Run;
end.

Por isso está dando Violação de memória, você está chamando o DataModule no Login, porem este ainda não foi criado. Dica: Sempre crie os Datamodules do seu sistema antes de tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

begin
  Application.Initialize;
  Application.Title := 'Sistema de Contagem Lig Chopp';
  [u][b]Application.CreateForm(TDM, DM);[/b][/u] --> Crie os DataModules antes de tudo
  Application.CreateForm(TFrmLogin, FrmLogin);
  Application.CreateForm(Tfrmmenuprin, frmmenuprin);
  Application.CreateForm(TFrmSplash, FrmSplash);
  Application.CreateForm(TFrmCadPadrao, FrmCadPadrao);
  Application.CreateForm(TFrmCadCliente, FrmCadCliente);
  Application.CreateForm(TFrmCadFornecedores, FrmCadFornecedores);
  Application.CreateForm(TFrmCadCategoria, FrmCadCategoria);
  Application.CreateForm(TFrmCadFuncionarios, FrmCadFuncionarios);
  Application.CreateForm(TFrmMovVendas, FrmMovVendas);
  Application.CreateForm(TFrmMovItensdaVenda, FrmMovItensdaVenda);
  Application.CreateForm(TFrmCadItens, FrmCadItens);


  Application.Run;
end.

Por isso está dando Violação de memória, você está chamando o DataModule no Login, porem este ainda não foi criado. Dica: Sempre crie os Datamodules do seu sistema antes de tudo.

 

Amanha vou testar mudar de lugar se der certo vlw

se naum posto mais aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua tela de login está sendo chamada no evento "onCreate" do seu form principal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.