Fórum validar CPF #147070

18/03/2003

0

queria saber como funciona o cpf, queria saber aqueles calculos, nao queria o algoritmo e sim como faze-lo


Jiz/df

Jiz/df

Responder

Posts

18/03/2003

E_gama

bem o algorítimo é o seguinte:


1º dígito: (vamos chamar de DV1) - vamos chamar de D1, D2, D3, ..., D12 cada um dos doze primeiros dígitos do CNPJ:
 
SOMA = (D1 * 5)
      + (D2 * 4)
      + (D3 * 3)
      + (D4 * 2)
      + (D5 * 9)
      + (D6 * 8)
      + (D7 * 7)
      + (D8 * 6)
      + (D9 * 5)
      + (D10 * 4)
      + (D11 * 3)
      + (D12 * 2)
 
DV1 = 11 - (SOMA mod 11) -> resto da divisao por 11.
 
SE DV1 > 9 ENTAO DV1 = 0.
 
2º dígito: (chamaremos de DV2)
 
SOMA = (D1 * 6)
      + (D2 * 5)
      + (D3 * 4)
      + (D4 * 3)
      + (D5 * 2)
      + (D6 * 9)
      + (D7 * 8)
      + (D8 * 7)
      + (D9 * 6)
      + (D10 * 5)
      + (D11 * 4)
      + (D12 * 3)
       + (DV1 * 2)
 
DV2 = 11 - (SOMA mod 11) -> resto da divisao por 11.
 
SE DV2 > 9 ENTAO DV2 = 0.



Bem, taí o algorítmo. Qualquer dúvida ...


Responder

Gostei + 0

18/03/2003

Anonymous

eu pedi foi deCPF, AGUARDO A RESPOSTA. GRATRO


Responder

Gostei + 0

18/03/2003

Marcelo Saviski

[color=#456789:b55523bef2][b:b55523bef2]FUNÇÃO PARA VALIDAR CPF[/b:b55523bef2]

function ValidaCpf(Cpf: String): Boolean;
var
dig, i: byte;
Total: integer;
begin
while Length(Cpf) < 11 do
Cpf:= ´0´+Cpf;
if Cpf <> ´00000000000´ then
begin
Total:= 0;
for i:= 10 downto 2 do
Total:= Total + (StrToInt(cpf[11-i]) * i);
dig:= Total mod 11;
if dig < 2 then
Dig:= 0
else
dig:= 11 - dig;
if IntToStr(Dig) <> cpf[10] then
Result:= False
else
begin
Total:= 0;
for i:= 10 downto 2 do
Total:= Total + (StrToInt(cpf[12-i]) * i);
dig:= Total mod 11;
if dig < 2 then
Dig:= 0
else
dig:= 11 - dig;
if IntToStr(Dig) <> cpf[11] then
Result:= False
else
Result := True;
end;
end
else
Result:= False;
end;[/color:b55523bef2]


Responder

Gostei + 0

18/03/2003

Henry Lima

Esta função aceita somente o cpf formatado 999.999.999-99, beleza ela retorna True se o cpf for válido e False se for inválido;

Function CPF(Lixo : String): Boolean;
Var
n1, n2, n3, n4, n5, n6, n7, n8, n9: integer;
D1, D2: integer;
Digitado, Calculado, Num : string;

Begin

Num := Copy(Lixo, 0, 3) + Copy(Lixo, 5, 3) + Copy(Lixo, 9, 3) + Copy(Lixo, 13, 2);

n1 := StrToInt(num[1]);
n2 := StrToInt(num[2]);
n3 := StrToInt(num[3]);
n4 := StrToInt(num[4]);
n5 := StrToInt(num[5]);
n6 := StrToInt(num[6]);
n7 := StrToInt(num[7]);
n8 := StrToInt(num[8]);
n9 := StrToInt(num[9]);
d1 := n9 * 2 + n8 * 3 + n7 * 4 + n6 * 5 + n5 * 6 + n4 * 7 + n3 * 8 + n2 * 9 + n1 * 10;
d1 := 11 - (d1 mod 11);

If d1 >= 10 Then d1 := 0;

d2 := d1 * 2 + n9 * 3 + n8 * 4 + n7 * 5 + n6 * 6 + n5 * 7 + n4 * 8 + n3 * 9 + n2 * 10 + n1 * 11;
d2 := 11 - (d2 mod 11);

If d2 >= 10 Then d2 := 0;

calculado := IntToStr(d1) + IntToStr(d2);
digitado := num[10] + num[11];

If calculado = digitado Then
Cpf := True
Else
Cpf := False;

End;

Espero que lhe ajude


Responder

Gostei + 0

18/03/2003

Aroldo Zanela

750 Dicas de Delphi

http://www.lloydsoft.hpg.ig.com.br/

function CalculaCnpjCpf(Numero : String) : String;
var
  i,j,k, Soma, Digito : Integer;
  CNPJ : Boolean;
begin
  Result := Numero;
  case Length(Numero) of
  9:
  CNPJ := False;
  12:
  CNPJ := True;
  else
  Exit;
  end;
  for j := 1 to 2 do
  begin
  k := 2;
  Soma := 0;
  for i := Length(Result) downto 1 do
  begin
  Soma := Soma + (Ord(Result[i])-Ord(´0´))*k;
  Inc(k);
  if (k > 9) and CNPJ then
  k := 2;
  end;
  Digito := 11 - Soma mod 11;
  if Digito >= 10 then
  Digito := 0;
  Result := Result + Chr(Digito + Ord(´0´));
  end;
end; 



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar