 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Iplu Novato

Registrado: Terça-Feira, 27 de Julho de 2004 Mensagens: 50
|
Enviada: Qui Out 05, 2006 11:12 am Assunto: Tratar Datas |
|
|
Caros amigos;;
Quando digito sem querer uma data invalida (exemplo: 01/20/2006). Ele da erro, ok. Mas como faço para tratar esse erro de data?
Obigado pela ajuda |
|
| Voltar ao Topo |
|
 |
ledelos Aprendiz


Registrado: Quinta-Feira, 20 de Abril de 2006 Mensagens: 230 Localização: São Paulo - SP
|
Enviada: Qui Out 05, 2006 12:22 pm Assunto: Tratar Datas |
|
|
try
StrToDate(Edit1.text ) ;
ShowMessage(\'Data válida!\');
except
On EConvertError do
ShowMessage(\'Erro, Data Inválida!\')
end; _________________ Sucesso. A perseverança recompensa.
Utilizando : Delphi 2006 + DBExpress + Firebird 1.5 |
|
| Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Out 05, 2006 1:32 pm Assunto: Tratar Datas |
|
|
Olah amigo se vc quiser tratar diversos erros no teu aplicativo inclusive erro de datas invalidas vc pode usar um ApplicationEvents e colocar no evento onExeption do componente esse codigo, assim vc trata varios erros do teu programa inclusive coloquei um utilitario que gera arquivo TXT e assim vc podera no caso se estiver o teu projeto em algum cliente vc verificar os erros gerados pelo programa com um bloco de notas dentro da pasta aonde se encontra o projeto, ficando assim mais facil de vc arruma-los.
[code]procedure TPrincipal.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
Var
f : TextFile;
Eq : Boolean;
mensagem, Arq : String;
Pos1, Pos2: integer;
Begin
If Pos(UpperCase(\'is not a valid date\'), UpperCase(E.Message)) <> 0 then
showmessage(\'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);
showmessage(\'É obrigatório o preenchimento do campo \'+ mensagem + \'.\');
end
else
If Pos(UpperCase(\'key violation\'), UpperCase(E.Message)) <> 0 then
showmessage(\'Houve violação de Chave. Registro já incluido.\')
else
If Pos(UpperCase(\'Input value\'), UpperCase(E.Message)) <> 0 then
showmessage(\'Campo preenchido com valor não válido. Procedaa correção.\')
else
If Pos(UpperCase(\'is not a valid time\'), UpperCase(E.Message)) <> 0 then
showmessage(\'Hora inválida, proceda a correção.\')
else
showmessage(\'Ocorreu o seguinte erro: \'+UpperCase(E.Message));
//**********codigo para gerar erros do exe em arq. TXT******
Arq := ExtractFilePath(Application.ExeName)+\'Erros.Log\';
Eq := FileExists( Arq );
AssignFile( f , Arq );
if Eq then
Append(f)
else
Rewrite(f);
WriteLn( f, DateToStr(now)+\' - \'+TimeToStr(now)+\' - \'+E.Message );
CloseFile(f);
end;[/code]
[color=red]Esse codigo vai funcionar 100% somente quando vc estiver rodando o programa executavel sem estar com o compilador Delphi ativado, pois neste caso o Delphi vai chamar o erro antes do codigo[/color]
Mais tambem vc pode usar como o colega acima postou ou assim no evento onexit do maskedit
[code]procedure TForm3.MaskEdit1Exit(Sender: TObject);
begin
if Trim(TMaskEdit(Sender).Text) <> \'/ /\' then
begin
try
StrToDate(TMaskEdit(Sender).Text);
TMaskEdit(Sender).Text := DateToStr(StrToDate(TMaskEdit(Sender).Text));
except
//-- Trata erro de data inválida
on EConvertError do
begin
ShowMessage(\'Data inválida, Favor proceda a correção!\');
TMaskEdit(Sender).SetFocus;
end;
end;
end;
end;[/code]
[Editado em 5/10/2006 por adriano_servitec] _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
| Voltar ao Topo |
|
 |
dasoan Novato

Registrado: Quinta-Feira, 15 de Dezembro de 2005 Mensagens: 9
|
Enviada: Qui Out 05, 2006 2:07 pm Assunto: Tratar Datas |
|
|
| Porque você não usa o componente DateTimePicker ? Assim não tem como se digitar a data errada, não é ? |
|
| Voltar ao Topo |
|
 |
Iplu Novato

Registrado: Terça-Feira, 27 de Julho de 2004 Mensagens: 50
|
Enviada: Qui Out 05, 2006 4:37 pm Assunto: Tratar Datas |
|
|
Obrigado caros amigos pelas dicas..irei testar os dos codigos. São muito validos pra mim.
Agradeço desde já |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|