Fórum Validação de CPF #226757
18/04/2004
0
Fiz uma pesquisa aqui no forum sobre validação de cpf e encontrei a resposta.
Mas uma duvida me surgiu, se lanço um cpf invalido a função funciona me gerando uma mensagem que esta errado.
Mas reparei o seguinte se lanço um CPF 111.111.111-11 a função valida o CPF e assim com 222.222.222-22 e 000.000.000-00 gostaria de saber se isto esta correto, pois CPF 000.000.000-00 não existe, ou se tem alguma função que não permita esse tipo de entrada.
Desde de já Obrigado!
Debug
Curtir tópico
+ 0Posts
18/04/2004
Maxadens
O CPF, como vc e todos devem saber, possui 11 numeros, sendo os 2 ultimos o DV (Digito Verificador). Podemos usar digitos verificadores em codigos de cadastro de clientes ou de produtos. DVs com um, dois numeros ou ate mesmo letras. Mas... por qual motivo? O motivo é simples.
Sumponhamos que vc vai digitar um produto de codigo: 7015-2
7015 é o numero dele e 2 é o Digito verificador. Se em uma eventualidade vc digita 6015-2, o sistema ira verificar se o calculo feito com o numero retorna 2. se o DV estiver errado, o numero do produto deve estar tambem.
no caso do CPF tambem. suponhamos que vc digite um dos 9 numeros do CPF errado. o DV servira como garantia. Mas ninguem garante se aquele numero de CPF existe ou não.
DV serve para verificar possiveis erros de digitação. Porque a chance de erro se torna quase 0.
Se vc quer proibir esse tipo de coisa (000.000.000-00), é so implementar a rotina de validação. Mas cá entre nos: Quem seria o usuário louco que colocaria um CPF desses? Se o sistema é de uma loja, as pessoas responsáveis pelo cadastro devem ser responsáveis pelas informações do cadastro. Acho que seria inútil essa validação. Minha opinião é claro.
Mas é isso ai. Na verdade eu so quiz mesmo foi fazer um comentário. Mas como todos sabemos. Na programação, tudo é possivel, ate que provem o contrário!
Valeu!
Gostei + 0
19/04/2004
Paullus
Concordo com o comentário do [b:e518784f9a]RonaldoAraujo[/b:e518784f9a], de que o usuário é responsável pelas informações dadas ao sistema, só que o dono do sistema deve se precaver de usuários mal-intencionados.
A linha abaixo é a que eu utilizo para invalidar este tipo de entrada.
Result := AnsiReplaceStr(Valor, Valor[1], ´´) <> ´´;
Onde [b:e518784f9a]Valor[/b:e518784f9a] é a variável contendo o número do CPF. Supondo que a sua entrada contenha somente números (retirando-se os pontos e o hífen do DV).
Se você desejar a rotina para deixar somente os números é a seguinte:
function apenasNumeros(valor: string): string; var i: integer; begin result := ´´; for i := 1 to (length(valor)) do if (valor[i] in [´0´..´9´]) then result := Trim(result + valor[i]); end;
Gostei + 0
19/04/2004
Paullus
function apenasNumeros(valor: string): string;
var
i: integer;
begin
result := ´´;
for i := 1 to (length(valor)) do
if (valor[i] in [´0´..´9´]) then
result := Trim(result + valor[i]);
end;
function validacaoInicial(Valor: string): boolean;
begin
Result := AnsiReplaceStr(apenasNumeros(Valor), Valor[1], ´´) <> ´´;
end;
function validaCPF(CPF: string): boolean;
var
begin
if not validacaoInicial(CPF) then
Exit;
{Aqui vem o restante do seu código de validação}
end;Gostei + 0
19/04/2004
Rodolpho123
Sem comentários...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)