Fabrício Desbessel
Delphiano de coração
Clube Delphi
 Downloads | Mapa do Site | 41 visitantes on-line 


 Login
   
    
 Lembrar de mim
Esqueceu sua senha?

 MENU
 :: Inicial
 :: Currículo
 :: Lições
 :: Contato
 :: Delphi
 :: Publicações
 :: Livros
 :: Lattes
 :: Projetos

 Buscar no site
  

 Ajuda...


 Clube Delphi


 Busca Google

  
 Delphi - Tratando erros de sistemas

Todo bom sistema deve ter um tratamento adequado de erros, os quais sempre poderão acontecer.
Esse artigo mostrará como tratar todos erros que acontecem em um sistema desenvolvido com Delphi, de uma forma bem simples, utlizando o componente ApplicationEvents.

Bem vamos à prática. Siga os passos abaixo:

1 - Adicione ao formulário principal da aplicação um componente ApplicationEvents, disponível na paleta de componentes Additional.

2 - Com o componente ApplicationEvents1 selecionado, acesse o Object Inspector, sua aba Events e de um clique duplo no evento OnException.

3 - Adicione as seguintes variáveis ao evento:

var
 mensagem: string;
 Pos1, Pos2: integer;

4 - Codifique o evento conforme a listagem abaixo:

if Pos(UpperCase('is not a valid date'), UpperCase(E.Message)) <> 0 then
  mensagem:='Data inválida, proceda a correção.'
 else if Pos(UpperCase('must have a value'), UpperCase(E.Message)) <> 0 then
 begin
  Pos1:=Pos('''', E.Message);
  mensagem:=E.Message;
  Delete(mensagem, Pos1, 1);
  Pos2:=Pos('''', mensagem);
  mensagem:=copy(E.Message, Pos1 + 1, Pos2 - Pos1);
  mensagem := 'É obrigatório o preenchimento do campo '+ mensagem + '.';
 end
 else if Pos(UpperCase('key violation'), UpperCase(E.Message)) <> 0 then
  mensagem := 'Houve violação de Chave. Registro já incluido.'
 else if Pos(UpperCase('is not a valid time'), UpperCase(E.Message)) <> 0 then
  mensagem := 'Hora inválida, proceda a correção.'
 else if Pos(UpperCase('is not a valid float'), UpperCase(E.Message)) <> 0 then
 begin
  Pos1 :=Pos('''', E.Message);
  mensagem :=E.Message;
  Delete(mensagem, Pos1, 1);
  Pos2 := Pos('''', mensagem);
  mensagem :=copy(E.Message, Pos1 + 1, Pos2 - Pos1);
  mensagem := 'O valor '+ mensagem + ' não é válido.';
 end
 else if Pos(UpperCase('field value required'), UpperCase(E.Message)) <> 0 then
 begin
  Pos1 :=Pos('column ', E.Message) + 7;
  Pos2 :=Pos(',', E.Message);
  mensagem :=copy(E.Message, Pos1, Pos2 - Pos1);
  mensagem := 'Campo ' + mensagem + ' deve ser preenchido.';
 end
 else if Pos(UpperCase('ATTEMPT TO STORE DUPLICATE VALUE'), UpperCase(E.Message)) <> 0
 then
  mensagem := 'Não é permitido valor duplicado. '
 else if Pos(UpperCase('FOREIGN KEY'), UpperCase(E.Message)) <> 0 then
  mensagem := 'Operação não permitida, registro vinculado em outra tabela está faltando.'
 else if Pos('VIOLATION OF PRIMARY OR UNIQUE KEY CONSTRAINT', UpperCase(E.Message)) <> 0
 then
  mensagem := 'Registro Duplicado'+#13#10+Copy(UpperCase(E.Message),Pos('VIOLATION OF PRIMARY OR UNIQUE KEY CONSTRAINT',UpperCase(E.Message))+47,100)
 else if (Pos(UpperCase('MUST APPLY UPDATES BEFORE REFRESHING DATA'),
 UpperCase(E.Message)) <> 0) then
  mensagem := 'É necessário aplicara as alterações antes de atualizar os dados.'
 else if (Pos(UpperCase('INVALID INPUT VALUE'), UpperCase(E.Message)) <> 0) then
  mensagem := 'Valor digitado não é valido conforme a máscara.'
 else
  mensagem := 'Ocorreu o seguinte erro: ' + #13 +UpperCase(E.Message);
 MessageDlg(mensagem, mtError, [mbOk], 0);
 ABORT;

Com isso você estará tratando a maioria dos erros que ocorrem durante a exeução de sistemas. Fique a vontade para adicionar novas mensagens.

Lembrando que executando o sistema pelo Delphi, ainda serão exibidas mensagens em Inglês devido ao modo de debug. Para testar o tratamento o ideal é executar o sistema por fora do Delphi.


 
 Edição Atual

Edição Atual


 Aprendizagem

Para você que quer aprender SQL, abaixo tem o link para um Objeto de Aprendizagem (OA) sobre o assunto.

Aprendendo SQL


 Frases
"Nunca pergunte, à um desenvolvedor Delphi, se ele consegue fazer algum software específico...
...Pergunte somente quanto tempo ele levará!"

 Arquivo
 :: Acessando o Firebird através do Excel  
 :: Dar um pouco de amor incentiva muito as outras pessoas a fazerem o mesmo 
 :: Super produção da minha KX250F 
 :: Retorno a FAHOR/CFJL 
 :: O que você quer ser quando crescer? 
 :: Como a vida ensina 
 :: Delphi Conference 2010 - Uma certa indignação... 
 :: RadPHP XE o novo Delphi for PHP 
 :: Delphi - Tratando erros de banco de dados 
 :: Delphi - Tratando erros de sistemas 
 :: Delphi - Uilizando o Enter ao invés do TAB em projetos CLX 
 :: Delphi 2009 
 :: Crie uma loja virtual com Delphi for PHP - Parte XII 
 :: Crie uma loja virtual com Delphi for PHP - Parte XI 
 :: Crie uma loja virtual com Delphi for PHP - Parte X 
 :: Delphi - Como fazer o enter disparar um Click de um botão 
 :: Crie uma loja virtual com Delphi for PHP - Parte IX 
 :: Crie uma loja virtual com Delphi for PHP - Parte VIII 
 :: Crie uma loja virtual com Delphi for PHP - Parte VII 
 :: Delphi - Validando CNPJ 
 :: Crie uma loja virtual com Delphi for PHP - Parte VI 
 :: Crie uma loja virtual com Delphi for PHP - Parte V 
 :: Crie uma loja virtual com Delphi for PHP - Parte IV 
 :: Crie uma loja virtual com Delphi for PHP - Parte III 
 :: Encontro de Craques 
 :: Crie uma loja virtual com Delphi for PHP - Parte II 
 :: Você é Hands on? 
 :: Crie uma loja virtual com Delphi for PHP - Parte I 
 :: Autenticação no Delphi for PHP - Parte IV 
 :: Autenticação no Delphi for PHP - Parte III 
 :: Autenticação no Delphi for PHP - Parte II 
 :: Autenticação no Delphi for PHP - Parte I 
 :: Cá entre nós... – Horizontina e os horizontinenses 
 :: Window (Janelas) no Delphi For PHP 
 :: Nada substitui o Talento 
 :: MainMenu no Delphi For PHP 
 :: Aplicações MySQL com Delphi for PHP - Parte VII 
 :: Aplicações MySQL com Delphi for PHP - Parte VI 
 :: Delphi - Conexões dinâmicas ao Banco de Dados 
 :: Mundo Corporativo - A história da formiga 
 :: Aplicações MySQL com Delphi for PHP - Parte V 
 :: Impedir os cadastros em duplicidade 
 :: Aplicações MySQL com Delphi for PHP - Parte IV 
 :: Aplicações MySQL com Delphi for PHP - Parte III 
 :: Aplicações MySQL com Delphi for PHP - Parte II 
 :: Aplicações MySQL com Delphi for PHP - Parte I 
 :: Gráficos no Delphi II 
 :: Gráficos no Delphi I 
 :: Delphi For PHP 
 :: Delphi - Relatórios com Quick Report - Parte VI 
 :: Delphi - Relatórios com Quick Report - Parte V 
 :: Delphi Tour 
 :: Delphi - Relatórios com Quick Report - Parte IV 
 :: Delphi - Relatórios com Quick Report - Parte III 
 :: Delphi - CodeGear anuncia Delphi 2007 
 :: Delphi - CodeGear anuncia Delphi for PHP 
 :: Delphi - Relatórios com Quick Report - Parte II 
 :: Delphi - Relatórios com Quick Report - Parte I 
 :: Delphi - Mestre/Detail com dbExpress 
 :: Delphi - Iniciando a utilização da Tecnologia Ajax - Parte V 
 :: Delphi - Iniciando a utilização da Tecnologia Ajax - Parte IV 
 :: Delphi - Iniciando a utilização da Tecnologia Ajax - Parte III 
 :: Delphi - Iniciando a utilização da Tecnologia Ajax - Parte II 
 :: Delphi - Iniciando a utilização da Tecnologia Ajax - Parte I 
 :: Delphi - Wizards para criação de banco de dados no Delphi 7 
 :: Delphi - Trabalhando com o Database Desktop 
 :: Delphi - Validando CPF 
 :: Delphi - Colocando Backup e Restauração em Sistemas com Firebird ou Interbase 
 :: Delphi - Artigo publicado na Revista ClubeDelphi 
 :: Palestrante na Borcon 
 :: Calculando o "Custo Brasil" em um PC 
 :: Delphi - Aplicações Web com Webbroker - Parte V 
 :: Políticos Honestos 
 :: Delphi - Aplicações Web com Webbroker - Parte IV 
 :: Delphi - Artigo publicado na revista Clube Delphi 
 :: Delphi - Aplicações Web com Webbroker - Parte III 
 :: Delphi - Artigo publicado na revista Clube Delphi 
 :: Delphi - Aplicações Web com Webbroker - Parte II 
 :: Delphi - Aplicações Web com Webbroker - Parte I 
 :: Delphi - Instalando o QuickReport no Delphi 7 
 :: Delphi - DLL's com formulários 
 :: Delphi - DLLs! Porque e Como utilizar 
 :: Delphi - Montando telas de cadastro dinamicamente 
 :: Delphi - Executando vídeo no Delphi através do ActiveX do Windows Media Player 
 :: Delphi - Listando arquivos de um diretório 
 :: Delphi - Como criar arquivos de Help com softwares gratuitos 
 :: Delphi - Consumindo RSS de notícias em .Net 
 :: Delphi - Criando uma instalação profissional para sua aplicação utilizando o InstallShield  
 :: Comissão Editorial da Revista Clube Delphi 
 :: Lançamento do Sistema SAS 
 :: Colunista ClubeDelphi 
 :: Delphi - Não perder dados com uma queda de energia 
 :: Delphi - Colocando a opção de configurar impressão 
 :: Delphi - Traduzindo as mensagens de erro 
 :: Exemplo de Persistência 
 :: Delphi - Colocando Backup em sistemas com tabelas Paradox 
 :: Delphi - Uilizando o Enter ao invés do TAB 
 :: Delphi - Deixando seus sistemas muito mais bonitos 
 :: Delphi - Impedir o fechamento da tela com ALT+F4 
 :: Delphi 2005 
 :: Delphi - Tela de Consultas Personalizáveis 
 ::  Delphi - Gerar planilhas do excel através de uma consulta (Query) 
 :: Delphi - Telas de Apresentação 
 :: Delphi - Filtrando Tabelas 

Fabrício Desbessel - É permitida a reprodução de qualquer material desse site desde que seja citada a fonte.