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 

Help CPF - Alguem pode me Ajudar ? //Resolvido

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


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Ter Set 15, 2009 9:40 am    Assunto: Help CPF - Alguem pode me Ajudar ? //Resolvido Responder com Citação

Pessoal preciso de mais um help

Assim tenho uma Unit chamada função para validar meu CPF, e no edit quando sai dele chama a função:

if DEdit_CPF3.Text = '' then
Abort;
if not TestaCpf(DEdit_CPF3.Text)then
ShowMessage('CPF INVALIDO');

só que quando o usuario digita meio CPF '999.99 . - ' ai me da o erro
' ' is not valid integer value (não valida campo inteiro) o que fiz foi colocar assim

if DEdit_CPF3.Text = '' then
DEdit_CPF3.Text := 000000000
Abort;
if not TestaCpf(DEdit_CPF3.Text)then
ShowMessage('CPF INVALIDO');

mas ai não valida mais nada porque estou passando um valor fixo.

no meu banco Firebird o campo esta como Varchar, teria que passar ele para integer ? ou alguma coisa que fiz errado?

Alguem pode me ajudar.

ja agradeço obrigado.


Editado pela última vez por Fabianoluizdb em Qua Set 16, 2009 4:44 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
harleydk
Profissional
Profissional


Registrado: Quinta-Feira, 4 de Setembro de 2008
Mensagens: 635

MensagemEnviada: Ter Set 15, 2009 10:07 am    Assunto: Responder com Citação

coloca assim no OnKeyPress...

Código:
   if Key = ' ' then
      Key := #0;


se vc digitar espaço, o sistema disconsidera

Ps tem um espaço dento da aspas simples
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Fabianoluizdb
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Ter Set 15, 2009 12:21 pm    Assunto: Responder com Citação

Continua com erro

eu havia colocado o evento no Edit do CPF na saida, e mesmo deixando o campo em branco da o erro, to achando que o problema e da minha mascara, porque mesmo passando pelo campo e não digitando nada ele da o erro.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
andelphi
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 2 de Outubro de 2006
Mensagens: 273

MensagemEnviada: Ter Set 15, 2009 5:08 pm    Assunto: Responder com Citação

Na sua unit que valida o CPF, coloque um try...except onde ele faz a transformação de String para Integer (StrToInt). Caso dê algum erro, você sai da função e emite a mensagem.

Abraços,
Andelphi.[/quote]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Fabianoluizdb
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Ter Set 15, 2009 5:31 pm    Assunto: Responder com Citação

Valeu pela Dica

Vou testar, mais tarde coloco aqui se deu certo ou não,

Mas desde ja Agradeço+

Valeu.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Fabianoluizdb
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Ter Set 15, 2009 9:28 pm    Assunto: Responder com Citação

Cara mexi em tudo mas não consegui achar de uma olhada na minha validação faz favor para ver o que estou fazendo errado, baixei um prorama que valida do Active DElphi mas tem o mesmo probema.

Alguem pode me ajudar ????

function TestaCpf( xCPF:String ):Boolean;

{Testa se o CPF é válido ou não}
Var
d1,d4,xx,nCount,resto,digito1,digito2 : Integer;
Check : String;
Begin
d1 := 0; d4 := 0; xx := 1;
for nCount := 1 to Length( xCPF )-2 do
begin
if Pos( Copy( xCPF, nCount, 1 ), '/-.' ) = 0 then
begin
d1 := d1 + ( 11 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
d4 := d4 + ( 12 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
xx := xx+1;
end;
end;
resto := (d1 mod 11);
if resto < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - resto;
end;
d4 := d4 + 2 * digito1;
resto := (d4 mod 11);
if resto < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - resto;
end;
Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCPF,succ(length(xCPF)-2),2) then
begin
Result := False;
end
else
begin
Result := True;
end;
end;

end.

Valeu
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
andelphi
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 2 de Outubro de 2006
Mensagens: 273

MensagemEnviada: Qua Set 16, 2009 4:15 pm    Assunto: Responder com Citação

Coloque um bloco try...except na sua função, como segue abaixo.

function TestaCpf( xCPF:String ):Boolean;
{Testa se o CPF é válido ou não}
Var
d1,d4,xx,nCount,resto,digito1,digito2 : Integer;
Check : String;
begin
d1 := 0; d4 := 0; xx := 1;
for nCount := 1 to Length( xCPF )-2 do
begin
if Pos( Copy( xCPF, nCount, 1 ), '/-.' ) = 0 then
begin
try
d1 := d1 + ( 11 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
d4 := d4 + ( 12 - xx ) * StrToInt( Copy( xCPF, nCount, 1 ) );
xx := xx+1;
except
ShowMessage('CPF inválido.');
end;

end;
end;
resto := (d1 mod 11);
if resto < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - resto;
end;
d4 := d4 + 2 * digito1;
resto := (d4 mod 11);
if resto < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - resto;
end;
Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCPF,succ(length(xCPF)-2),2) then
begin
Result := False;
end
else
begin
Result := True;
end;
end;

end.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Fabianoluizdb
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Qua Set 16, 2009 4:42 pm    Assunto: Responder com Citação

Amigao

Valeu pela dica, só deu um errinho foi no Showmessage('CPF Invalido')
"Undeclared identifier:'Showmessage'", mas tranquilo comentei e rodou normalmente ele traz a mensagem CPF invalido do meu teste no campo quando sai dele.

Grande abraço e bom trabalho.

Valeu
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
andelphi
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 2 de Outubro de 2006
Mensagens: 273

MensagemEnviada: Qua Set 16, 2009 5:41 pm    Assunto: Responder com Citação

Declara a unit Dialogs na sua unit que valida seu cpf, vai funcionar beleza.Que bom, precisamos estamos aí.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Fabianoluizdb
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 17 de Agosto de 2009
Mensagens: 396

MensagemEnviada: Qua Set 16, 2009 9:23 pm    Assunto: Responder com Citação

Amigo

Valeu pela dica deu certo, se precisar é só dar um toque

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
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