PRoblema com Data no Delphi
Estou usando o seguinte código para validação de data no evento onExit:
begin
try
StrToDate(MaskEdit2.Text);
except
on EConvertError do
ShowMessage (´Data Inválida!´);
end;
end;
o problema é o seguinte:
Estou usando um MaskEdit e configurei o EditMask para o formato Date.
Quando incluo um número só (ex: 1 / / ) e teclo TAB, o Delphi dá um erro dizendo que a Data é inválida(só que não é o erro do ShowMessage) é um erro de execução.
Como faço para criar uma ShowMessage para evitar o erro acima?
OBrigado!
begin
try
StrToDate(MaskEdit2.Text);
except
on EConvertError do
ShowMessage (´Data Inválida!´);
end;
end;
o problema é o seguinte:
Estou usando um MaskEdit e configurei o EditMask para o formato Date.
Quando incluo um número só (ex: 1 / / ) e teclo TAB, o Delphi dá um erro dizendo que a Data é inválida(só que não é o erro do ShowMessage) é um erro de execução.
Como faço para criar uma ShowMessage para evitar o erro acima?
OBrigado!
Plunky
Curtidas 0
Respostas
Carlos Bernardo
16/11/2003
Bom se eu entendi direito, vc deve estar testando logo após compilar,
tente fazer o teste chamando o executável, provavelmente não vai dar o erro, ou senão vc está usando 00/00/0000;1 na mascara, aí tente trocar pelo número 9....
tente fazer o teste chamando o executável, provavelmente não vai dar o erro, ou senão vc está usando 00/00/0000;1 na mascara, aí tente trocar pelo número 9....
GOSTEI 0
Educdc
16/11/2003
caro colega,
va no menu TOOLS - debugger opitons - NA GUia language exceptions e desmarque Stop on Delphi Exceptions
:arrow: qdo vc sai do MaskEdit2.Text o Delphi executa ´StrToDate(MaskEdit2.Text);´ como vc digitou apenas ´1//´ entao ele vai dar erro pq n tem como converter isso para data... esse CheckBox eh ligado as excessoes do Delphi
Abracos
va no menu TOOLS - debugger opitons - NA GUia language exceptions e desmarque Stop on Delphi Exceptions
:arrow: qdo vc sai do MaskEdit2.Text o Delphi executa ´StrToDate(MaskEdit2.Text);´ como vc digitou apenas ´1//´ entao ele vai dar erro pq n tem como converter isso para data... esse CheckBox eh ligado as excessoes do Delphi
Abracos
GOSTEI 0
Plunky
16/11/2003
Agora aparece a seguinte mensagem:
invalid input value. Use escape key to abandon changes.
Não teria como aparecer em vez disso a mensagem do ShowMessage (´Data Inválida´) ?
Obrigado
invalid input value. Use escape key to abandon changes.
Não teria como aparecer em vez disso a mensagem do ShowMessage (´Data Inválida´) ?
Obrigado
caro colega,
va no menu TOOLS - debugger opitons - NA GUia language exceptions e desmarque Stop on Delphi Exceptions
:arrow: qdo vc sai do MaskEdit2.Text o Delphi executa ´StrToDate(MaskEdit2.Text);´ como vc digitou apenas ´1//´ entao ele vai dar erro pq n tem como converter isso para data... esse CheckBox eh ligado as excessoes do Delphi
Abracos
GOSTEI 0
Celsoctorres
16/11/2003
Colega, o código está certo, porém este erro acontece porque deve estar executando o programa dentro do Delphi, tente abrir o aplicativo que o Delphi cria e veja que esse erro não acontece!
ps. se vc não digitar todos os números que contém a data o programa ainda mostrará um erro nativo do delphi.... ou seja tem que ser preenchido 17/11/03, se vc digitar somente 1 / / mostrará o erro, mas se vc digitar por exemplo 17/13/03, ou 35/12/03 mostrará data inválida.
vc pode fazer com o delphi conte o nº de caracteres para validar este...se o qtde de nº for menor que (8) que seria os dias/mes/ano sem esquecer da barra...
espero te ajudado
:wink:
ps. se vc não digitar todos os números que contém a data o programa ainda mostrará um erro nativo do delphi.... ou seja tem que ser preenchido 17/11/03, se vc digitar somente 1 / / mostrará o erro, mas se vc digitar por exemplo 17/13/03, ou 35/12/03 mostrará data inválida.
vc pode fazer com o delphi conte o nº de caracteres para validar este...se o qtde de nº for menor que (8) que seria os dias/mes/ano sem esquecer da barra...
espero te ajudado
:wink:
GOSTEI 0
Plunky
16/11/2003
Como seria esse código para o Delphi contar?
Colega, o código está certo, porém este erro acontece porque deve estar executando o programa dentro do Delphi, tente abrir o aplicativo que o Delphi cria e veja que esse erro não acontece!
ps. se vc não digitar todos os números que contém a data o programa ainda mostrará um erro nativo do delphi.... ou seja tem que ser preenchido 17/11/03, se vc digitar somente 1 / / mostrará o erro, mas se vc digitar por exemplo 17/13/03, ou 35/12/03 mostrará data inválida.
vc pode fazer com o delphi conte o nº de caracteres para validar este...se o qtde de nº for menor que (8) que seria os dias/mes/ano sem esquecer da barra...
espero te ajudado
:wink:
GOSTEI 0
Carlos Bernardo
16/11/2003
É só trocar a mascara 00/00/0000;1 por 99/99/9999;1
GOSTEI 0