
| | | | :: :: :: :: :: :: :: :: ::
|
|
|
| |
 |  | | | 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.
| | 
| | | |
|
Para você que quer aprender SQL, abaixo tem o link para um Objeto de Aprendizagem (OA) sobre o assunto.
Aprendendo SQL | |
|
|
| | | | "O segredo do êxito na vida de um homem está em preparar-se para aproveitar a ocasião, quando ela se apresenta." Disraelli |
|
|
| | | | :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
|
|
|
|