Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jhessica

verificar a validade do cpf

Recommended Posts

Olá Pessoal!

Estou fazendo um programa que necessita de uma rotina para verificar a validade do cpf. Fiz um código que deveria estar funcionando corretamente, mas não sei o que fazer com os valores.

tá funcionando assim:

* Um edit recebe o número do cpf (string) sem pontos nem traços;

* Criei uma variável do tipo array para receber esse valor convertido para inteiro;

* O problema é que, quando esse valor é convertido para inteiro dentro do array, ele fica com o seguinte valor: 0,0,0,0,0,0,0,0,0,0,0.

* No final, mesmo que o CPF esteja correto, o ShowMessage mostra sempre "Cpf Inválido"

Gostaria de saber como posso fazer esse código para que ele funcione direito.

Obrigada a quem puder ajudar.

cpf[i]:=strtoint(edit1.Text);

   //cálculo do primeiro dígito verificador
   soma1:=(cpf[1]*10)+(cpf[2]*9)+(cpf[3]*8)+
		  (cpf[4]*7)+ (cpf[5]*6)+(cpf[6]*5)+
		  (cpf[7]*4)+ (cpf[8]*3)+(cpf[9]*2);
   result1:=(soma1 div 11)*11;
   dv1:=soma1-result1;
   if (dv1=0) or (dv1=1) then
   begin
   digver01:=1;
   end
   else
   digver01:=11-dv1;
   edit2.Text:=inttostr(digver01);
   //cálculo do segundo dígito verificador
   soma2:=(cpf[1]*11)+(cpf[2]*10)+(cpf[3]*9)+
		  (cpf[4]*8)+ (cpf[5]*7)+(cpf[6]*6)+
		  (cpf[7]*5)+ (cpf[8]*4)+(cpf[9]*3)+
		  (digver01*2);
   result2:=(soma2 div 11)*11;
   dv2:=soma2-result2;
   if (dv2=0) or (dv1=2) then
   digver02:=1
   else
   digver02:=11-dv2;
   //teste de igualdade entre os valores:
   if (digver01=cpf[10]) and (digver02=cpf[11]) then
   ShowMessage ('Cpf válido!!')
   else
   ShowMessage ('Cpf Inválido');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela dica, foi muito útil. Mas agora estou precisando de ajuda para entender o código, e gostaria de saber como funciona essa parte dele, principalmente no que se trata a AnsiIndexStr:

 

case AnsiIndexStr(cpf,['00000000000','11111111111','22222222222','33333333333','44444444444',

							   '55555555555','66666666666','77777777777','88888888888','99999999999']) of

			0..9:   ret:=False;

			end;

		end
	else
		begin
		//Se não informado deixa passar
		if cpf = '' then
			ret:=True;
		end;
	end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.