ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Armazenar mensagens de erros

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
gnandi83
Aprendiz
Aprendiz


Registrado: Domingo, 15 de Agosto de 2010
Mensagens: 195

MensagemEnviada: Qua Ago 01, 2012 4:10 pm    Assunto: Armazenar mensagens de erros Responder com Citação

Boa tarde

Pessoal,

Estive pesquisando sobre a classe Except, e vi que tem funcionalidades muito importantes.
Então pensei, pegar esses erros, e armazena-los em um banco, porém, para isso não sei como fazer. Pois quando faço desse modo:
Código:

...
except
      on E : EIBInterBaseError do
      ShowMessage(' Erro na criação de banco de dados! ' +E.Message);


Ele vai pegar algum erro de conexão com o banco, seja senha, usuário ou caminho do banco entre outros. Isso sei por que com o E.Message traz o resto da mensagem d erro. mas..como prever o que virá no E.Message para poder fazer uma condição, tipo:

Se for mensagem de caminho invalido, poderia chamar erro 01, por exemplo.
Se for mensagem de usuario ou senha invalido, poderia ser erro 02, por exemplo.

Como poderei pegar a mensagem que trará o E.Message?

Não sei se fui claro..

Desde já obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leandroksc
Profissional
Profissional


Registrado: Quinta-Feira, 29 de Setembro de 2011
Mensagens: 528

MensagemEnviada: Qua Ago 01, 2012 4:16 pm    Assunto: Responder com Citação

Se entendi direito, vc pode fazer uma análise do texto da mensagem de erro. As mensagens são de certa forma padrão para cada tipo de erro. Logo, se vc utilizar algo assim, pode ajudar:

if Pos('ACCESS VIOLATION', AnsiUpperCase(E.Message)) > 0 then
ShowMessage('Ocorreu um erro ao acessar uma instância de objeto.');

Vc pode ir fazendo isso para cada tipo de mensagem de erro que vc deseja tratar...

Espero que ajude! Wink
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Marcelo.Tdsjr
Novato
Novato


Registrado: Segunda-Feira, 30 de Julho de 2012
Mensagens: 46

MensagemEnviada: Qua Ago 01, 2012 4:31 pm    Assunto: Re: Armazenar mensagens de erros Responder com Citação

Amigo,
voce pode olhar na documentacao de erros do IB e fazer um case/if no exception seguido de um pos...
Ex.:
if pos('error 0.1.1', e.messege)>0 then
Erro := ErroLogin
else if pos('error 0.1.2', e.messege)> 0 then
Erro:= ErroIp;
.......



gnandi83 escreveu:
Boa tarde

Pessoal,

Estive pesquisando sobre a classe Except, e vi que tem funcionalidades muito importantes.
Então pensei, pegar esses erros, e armazena-los em um banco, porém, para isso não sei como fazer. Pois quando faço desse modo:
Código:

...
except
      on E : EIBInterBaseError do
      ShowMessage(' Erro na criação de banco de dados! ' +E.Message);


Ele vai pegar algum erro de conexão com o banco, seja senha, usuário ou caminho do banco entre outros. Isso sei por que com o E.Message traz o resto da mensagem d erro. mas..como prever o que virá no E.Message para poder fazer uma condição, tipo:

Se for mensagem de caminho invalido, poderia chamar erro 01, por exemplo.
Se for mensagem de usuario ou senha invalido, poderia ser erro 02, por exemplo.

Como poderei pegar a mensagem que trará o E.Message?

Não sei se fui claro..

Desde já obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
gnandi83
Aprendiz
Aprendiz


Registrado: Domingo, 15 de Agosto de 2010
Mensagens: 195

MensagemEnviada: Qui Ago 02, 2012 8:37 am    Assunto: Responder com Citação

leandroksc escreveu:
Se entendi direito, vc pode fazer uma análise do texto da mensagem de erro. As mensagens são de certa forma padrão para cada tipo de erro. Logo, se vc utilizar algo assim, pode ajudar:

if Pos('ACCESS VIOLATION', AnsiUpperCase(E.Message)) > 0 then
ShowMessage('Ocorreu um erro ao acessar uma instância de objeto.');

Vc pode ir fazendo isso para cada tipo de mensagem de erro que vc deseja tratar...

Espero que ajude! Wink

Não entendi como fazer isso!
Poderia explicar melhor?

Obrigado pela intenção
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qui Ago 02, 2012 12:45 pm    Assunto: Responder com Citação

Alguns tipos de erros vc somente consegue no onrecocileerror, no caso do clientdataset, pois seus erros são silenciosos.
Vc pode simplesmente, colocar uma variável para pegar este tipo de erro, neste caso sem utilizar a tela de onreconcileerror.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gnandi83
Aprendiz
Aprendiz


Registrado: Domingo, 15 de Agosto de 2010
Mensagens: 195

MensagemEnviada: Sex Ago 03, 2012 9:03 am    Assunto: Responder com Citação

johnny-walker escreveu:
Alguns tipos de erros vc somente consegue no onrecocileerror, no caso do clientdataset, pois seus erros são silenciosos.
Vc pode simplesmente, colocar uma variável para pegar este tipo de erro, neste caso sem utilizar a tela de onreconcileerror.


bye

Eu tinha visto algo usando o ApplicationEvents. sabes algo a respeito?
Precisaria de algo prático! Para poder mostrar as mensagens de erros traduzidas para o cliente e catalogadas para nós!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Ago 03, 2012 9:14 am    Assunto: Responder com Citação

Repito para o clientdataset não dá para fazer, somente no evento do onreconcileerror, mas outras excessões de EDataBaseError que deriva da classe Excepcion é tranquilo.


Vc deve ter visto mais ou menos isto com este componente no evento onexception:
Código:

     if E is EIdSocketError then
        case EIdSocketError(E).LastError of
          10054: begin
                      Application.MessageBox('Seu captcha e consequentemente sua sessão com o servidor peer da Receita Federal expirou.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
                      LoadCapcha(IdHTTP1, Image1.Picture);
                 end;
          10053: Application.MessageBox('Houve uma falha de conexão de número #10053 com a internet.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
          10060: Application.MessageBox('Ocorreu uma falha na conexão de "Tempo Esgotado" de número #10060.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
          10061: Application.MessageBox('Houve uma falha de "Conexão recusada" de número #10061 pelo servidor.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
          11004: Application.MessageBox('Houve uma falha na conexão de número #11004 com a internet.', 'Aviso do Sistema', mb_ok+mb_iconwarning);
        end;






bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gnandi83
Aprendiz
Aprendiz


Registrado: Domingo, 15 de Agosto de 2010
Mensagens: 195

MensagemEnviada: Sex Ago 03, 2012 10:10 am    Assunto: Responder com Citação

Exatamente isso:
Isso para conexão com a net, e como faço com eventos do tipo:
digitar errado, não validar algo?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB