Validar Data - Na conversão da erro...

Delphi

30/09/2003

Ñ to intendendo...
Tenho esse codigo no onexit do MaskEdit1

try
:arrow: StrToDate(MaskEdit1.Text);
except
on EConvertError do
ShowMessage (´Data Inválida!´);

Mas qdo digito por exemplo: 12/13/03 na conversao da um BUG pra depois mostrar a SHOWMESSAGE... :roll: :roll:


Educdc

Educdc

Curtidas 0

Respostas

Luizfernando777

Luizfernando777

30/09/2003

experimente isso

var
cont : integer;
begin
if (Sender is TMaskEdit) then
begin
cont := Length( Trim( (Sender as TMaskEdit).Text ) );
try
if (Sender as TMaskEdit).Text = ´ / / ´ then
begin
exit;
end
else if cont <= 7 then
begin
(Sender as TMaskEdit).Clear;
exit;
end
else
begin
(Sender as TMaskEdit).Text := DateToStr(StrtoDate((Sender as TMaskEdit).Text));
end;
except
on Exception do
(Sender as TMaskEdit).SetFocus;
end;
end;
end;


GOSTEI 0
Educdc

Educdc

30/09/2003

:arrow: (Sender as TMaskEdit).Text := DateToStr(StrtoDate((Sender as TMaskEdit).Text));

Da erro nessa conversão...


GOSTEI 0
Luizfernando777

Luizfernando777

30/09/2003

estranho,
aqui no meu projeto funciona
tanto que testei novamente


GOSTEI 0
Educdc

Educdc

30/09/2003

qdo vc digita uma data inválida o q acontece?


GOSTEI 0
Luizfernando777

Luizfernando777

30/09/2003

ele não sai do MaskEdit
e aí o q acontece


GOSTEI 0
Educdc

Educdc

30/09/2003

:arrow: ta dando esse erro:

Projec Project1.exe raised exception class EConvertErro with message ´12/13/03´ is not a valid date´. Process sotpped. Use Step or Run to continue.


GOSTEI 0
Luizfernando777

Luizfernando777

30/09/2003

Manda o projeto exemplo para mim,
sem o executavel,
no meu email
luizfernando777@yahoo.com.br


GOSTEI 0
Educdc

Educdc

30/09/2003

kbei de mandar o mail...
da uma olhada la!!


GOSTEI 0
Luizfernando777

Luizfernando777

30/09/2003

experimenta executar o
seu projeto não pelo delphi,
mas sim pelo explorer,
não vai aparecer esse erro.
é que o debug do delphi pega isso
e passa a informação para você


GOSTEI 0
Educdc

Educdc

30/09/2003

eh pelo explorer deu certo! Entao este erro vai sempre aparecer enquanto eu estiver testando o programa? so depois de eu instalar tudo q some? aff!!


GOSTEI 0
Japa

Japa

30/09/2003

Amigo eu tambem tive esse problema e resolvi com esse codigo que consegui fazer:
data:= StrToDateDef(MaskEdit.Text, Date); if not (TryStrToDate(MaskEdit.Text, data)) then begin MessageDlg(´ Data invalida.´, mtError, [mbOK], 0); MaskEdit.Text:= DateToStr(data); end;


Ahh sim declare uma variavel local:
var data: TDateTime;


Bom eu decidi colocar a data do dia quando da o erro.. mas voce pode dar um SetFocus por exemplo... Ahhh sim coloque esse codigo no onexit de seu maskedit...

Boa sorte amigo... :wink:


GOSTEI 0
Jeancamila

Jeancamila

30/09/2003

Para ver o exemplo em tempo de execução pelo delphi é só configura-lo para isso:
Clicar em menu tools | Debugger options

Clicar na guia language exceptions e desmarcar o check box ´stop on delphi exceptions´


GOSTEI 0
POSTAR