Tratamento de Exception
06/09/2004
0
digito a data em um DBedit e quando saiu, ao invés de a função
entrar em ação aparece um erro mostrando que a data não é válida.
Realmente quero testar se a data é valida ou não, mas quando não for
válida quero que apareça a mensagem que programei.
Coloquei o código no evento onExit do DbEdit.
Já coloquei esse código direto no evento onExit:
Try
StrToDate(DBEditData.Text);
except
ShowMessage(´A data digitada não é uma data válida !!! Digite novamente´);
DBEditData.SetFocus;
end;
Se puder ajudar...
Valeu a força!!!
JR.
Jrjoliv2003
Posts
06/09/2004
Nerdex
Após o except vc terá que identificar e informar o tipo erro e passar este parâmetro para que a msg possa ser exibida. Outra coisa... o teste deste bloco protejido deve ser feito não no compilador Delphi, pois este sempre retornará o erro em run time. Para testar, vc deve rodar o .exe criado, direto do WinExplorer...
try
//código
except
on [i:ae557a5cfd]coloque aqui o erro diagnisticado[/i:ae557a5cfd] do
//coloque aqui sua mensagem de erro
07/09/2004
Jrjoliv2003
Não entendi o que colocar em ´erro diagnosticado´. Como que pego eu identifico esse erro? Pela mensagem?
try
//código
except
on coloque aqui o erro diagnisticado do
//coloque aqui sua mensagem de erro
Obrigado por estar ajudando.
JR.
08/09/2004
Fórum Vini
Isto não é realmente necessário, mas somente para ter certeza:
try ... except on EConvertError do begin ShowMessage(´A data digitada não é uma data válida !!! Digite novamente´); DBEditData.SetFocus; end; end;
O que ele quis dizer foi, a grosso modo, para você dizer assim para o compilador: ´Só mostra a mensagem se o erro causado foi mesmo pela data estar errada´, ou seja, se foi um erro EDivByZero(um exemplo, ele nunca ocorreria nesse caso), o seu programa não mostraria uma mensagem de erro, ele só mostraria quando o erro realmente foi causado por uma data inválida. O código que eu postei ali em cima faz exatamente isso. Para identificar as exceções você usa a classe delas(mas você pode usar a mensagem também, embora seja menos recomendável)
Não necessariamente, você pode ir em [b:d7bb3d8b36]Tools > Debugger Options > Language Exceptions[/b:d7bb3d8b36] e desmarcar a opção [b:d7bb3d8b36]Stop on Delphi Exceptions[/b:d7bb3d8b36] :wink:
Espero ter ajudado,
Vinicius;
09/09/2004
Jrjoliv2003
try
strtodate(dbedit1.Text);
except
on EConvertError do
begin
ShowMessage(´A data digitada não é uma data válida !!! Digite novamente´);
DBEdit1.SetFocus;
end;
end;
A mesnagem que aparece é do sistema ´is not valid datetime´. Uma mensagem que tem o ícone vermelho.
Se puder ajudar!!
JR.
09/09/2004
Xanatos
flw
09/09/2004
Jrjoliv2003
Eu geralmente uso componentes RX. Porém o campo é para Data de Nascimento. Fica muito chato o usuário ficar clicando até chegar o ano.
Eu vou mudar para string.
Mas obrigado por ter ajudado.
JR.
11/09/2004
Jrjoliv2003
Com a ajuda de um colega, mais uma vez, foi resolvido esse item:
No evento OnSetText do campo da tabela digitei:
var
Data:TDateTime;
begin
try
Data:=StrToDate(Text);
SuaTabelaCampoTada.AsDateTime:=Data;
Except
on Econverterror do
begin
MessageDlg(Text+´ Não é uma data válida!´,MtInformation,[Mbok],0);
Abort;
end;
end;
Valeu!!
JR
Clique aqui para fazer login e interagir na Comunidade :)