ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Tratar Datas

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Iplu
Novato
Novato


Registrado: Terça-Feira, 27 de Julho de 2004
Mensagens: 50

MensagemEnviada: Qui Out 05, 2006 11:12 am    Assunto: Tratar Datas Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
ledelos
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 20 de Abril de 2006
Mensagens: 230
Localização: São Paulo - SP

MensagemEnviada: Qui Out 05, 2006 12:22 pm    Assunto: Tratar Datas Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 05, 2006 1:32 pm    Assunto: Tratar Datas Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
dasoan
Novato
Novato


Registrado: Quinta-Feira, 15 de Dezembro de 2005
Mensagens: 9

MensagemEnviada: Qui Out 05, 2006 2:07 pm    Assunto: Tratar Datas Responder com Citação

Porque você não usa o componente DateTimePicker ? Assim não tem como se digitar a data errada, não é ?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Iplu
Novato
Novato


Registrado: Terça-Feira, 27 de Julho de 2004
Mensagens: 50

MensagemEnviada: Qui Out 05, 2006 4:37 pm    Assunto: Tratar Datas Responder com Citação

Obrigado caros amigos pelas dicas..irei testar os dos codigos. São muito validos pra mim.

Agradeço desde já
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB