MarcosG2 Postado Abril 29, 2005 Denunciar Share Postado Abril 29, 2005 E ai galera! PRECISO DE AJUDA!!!O que acontece?Estou incluindo o seguinte código no evento PostError da minha table pra tratar os possiveis erros da minha aplicação: ---------------------- ---------------------- ---------------------- ----------------procedure TFrmAlunos.AlunosPostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);begin inherited; if (E is EDBEngineError) then with EDBEngineError(E) do case Errors[0].ErrorCode of DBIERR_KEYVIOL: ShowMessage('Aluno já cadastrado!'); DBIERR_REQDERR: ShowMessage('Campo obrigatório não preenchido!'); end else ShowMessage('Erro no banco de dados:'+#13#13+ E.Message); Action := daAbort;end; ---------------------- ---------------------- ---------------------- ----------------Mas sempre quando acontece um erro, primeiro ele mostra o erro padrão do delphi e depois que "recompilo" o sistema, ele apresenta a mensagem tratada! O que eu faço pra minha aplicação não mostrar o erro do delphi, somente o erro com o tratamento?Me ajudem... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 30, 2005 Denunciar Share Postado Abril 30, 2005 Se você está executando dentro do Delphi, esse é o normal (aparecer primeiro a exceção do Delphi e depois executar o tratamento que você escreveu). Após compilado e executado diretamente (fora do ambiente do Delphi) você só verá o resultado do tratamento.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DELPHI-Man32 Postado Maio 1, 2005 Denunciar Share Postado Maio 1, 2005 Personalizar a caixa de mensagem de exceções (erro) do Delphi- Declare um método (procedure) na seção private do form principal conforme abaixo:privateprocedure ManipulaExcecoes(Sender: TObject; E: Exception);- Vá até a seção implementation e implemente este método, conforme o exemplo:procedure TForm1.ManipulaExcecoes(Sender: TObject; E: Exception);begin MessageDlg(E.Message + #13#13 + 'Suporte técnico:'#13 + 'tecnobyte@ulbrajp.com.br', mtError, [mbOK], 0);end; - No evento OnCreate do Form principal escreva o código abaixo:procedure TForm1.FormCreate(Sender: TObject);begin Application.OnException := ManipulaExcecoes;end;=== Para testar === - Coloque um Button no form;- No evento OnClick deste botão coloque o código abaixo:procedure TForm1.Button1Click(Sender: TObject);begin StrToInt('ABCD'); { Isto provoca uma exception }end;ObservaçõesCuidado! Não coloque código que possa gerar exceção na rotina que manipula as exceções, pois se ocorrer uma exceção neste rotina, esta será chamada recursivamente até estourar a pilha. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MarcosG2
E ai galera! PRECISO DE AJUDA!!!
O que acontece?
Estou incluindo o seguinte código no evento PostError da minha table pra tratar os possiveis erros da minha aplicação:
---------------------- ---------------------- ---------------------- ----------------
procedure TFrmAlunos.AlunosPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
inherited;
if (E is EDBEngineError) then
with EDBEngineError(E) do
case Errors[0].ErrorCode of
DBIERR_KEYVIOL: ShowMessage('Aluno já cadastrado!');
DBIERR_REQDERR: ShowMessage('Campo obrigatório não preenchido!');
end
else
ShowMessage('Erro no banco de dados:'+#13#13+ E.Message);
Action := daAbort;
end;
---------------------- ---------------------- ---------------------- ----------------
Mas sempre quando acontece um erro, primeiro ele mostra o erro padrão do delphi e depois que "recompilo" o sistema, ele apresenta a mensagem tratada! O que eu faço pra minha aplicação não mostrar o erro do delphi, somente o erro com o tratamento?
Me ajudem...
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.