Tratamento de Exception
06/09/2004
11
Tenho uma função que valida datas. Funciona perfeitamente. Porém eu
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.
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.
Responder
Posts
06/09/2004
Caro 2003...
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
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
Responder
07/09/2004
Desculpe! Sou novato em programação. Esse item faz parte do meu Projeto Final.
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.
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.
Responder
08/09/2004
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.
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;
Não entendi o que colocar em ´erro diagnosticado´. Como que pego eu identifico esse erro? Pela mensagem?
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)
Outra coisa... o teste deste bloco protejido deve ser feito não no compilador Delphi, pois este sempre retornará o erro em run time.
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;
Responder
09/09/2004
Fiz tudo que vc informou e nada. O código é esse:
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.
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.
Responder
09/09/2004
Bom esse problema acontece pq antes de entrar no Evento exit ele atribui os valores ao campo da tabela que é tipo Date. Se vc nao for mudar para tipo string entao ao inves de usar um TDBEdit vc pode usar um TEdit que seu código ira funcionar na boa!!!!
flw
flw
Responder
09/09/2004
Beleza!!
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.
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.
Responder
11/09/2004
Resolvido!!!
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
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)