validar CPF
queria saber como funciona o cpf, queria saber aqueles calculos, nao queria o algoritmo e sim como faze-lo
Jiz/df
Curtidas 0
Respostas
E_gama
18/03/2003
bem o algorítimo é o seguinte:
Bem, taí o algorítmo. Qualquer dúvida ...
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 ...
GOSTEI 0
Anonymous
18/03/2003
eu pedi foi deCPF, AGUARDO A RESPOSTA. GRATRO
GOSTEI 0
Marcelo Saviski
18/03/2003
[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]
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]
GOSTEI 0
Henry Lima
18/03/2003
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
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
GOSTEI 0
Aroldo Zanela
18/03/2003
750 Dicas de Delphi
http://www.lloydsoft.hpg.ig.com.br/
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;
GOSTEI 0