Código
var
vDig: Array[1..12] of integer;
i, vSoma, DF6, vResto, vDivisor, vPriDig, vSegDig: Integer;
begin
if vValidarCNPJ = 0 then
Begin
Result:=true;
exit;
End;
if Length(sCNPJ)=14 then begin
for i:=1 to 12 do begin
vDig[i]:=StrToInt(Copy(sCnpj,i,1));
end;
vSoma:=(5*vDig[1]) + (4*vDig[2]) + (3*vDig[3]) + (2*vDig[4]) +
(9*vDig[5]) + (8*vDig[6]) + (7*vDig[7]) + (6*vDig[8]) + (5*vDig[9]) +
(4*vDig[10]) + (3*vDig[11]) + (2*vDig[12]);
vDivisor:=vSoma div 11;
DF6:=vDivisor*11;
vResto:=vSoma-DF6;
if (vResto=0) or (vResto=1) then
vPriDig:=0
else
vPriDig:=11-vResto;
// Calculo do segundo digito
vSoma:=(6*vDig[1]) + (5*vDig[2]) + (4*vDig[3]) + (3*vDig[4]) +
(2*vDig[5]) + (9*vDig[6]) + (8*vDig[7]) + (7*vDig[8]) + (6*vDig[9]) +
(5*vDig[10]) + (4*vDig[11]) + (3*vDig[12]) + (2*vPriDig);
vDivisor:=vSoma div 11;
DF6:=vDivisor*11;
vResto:=vSoma-DF6;
if (vResto=0) or (vResto=1) then
vSegDig:=0
else
vSegDig:=11-vResto;
if (IntToStr(vPriDig)=Copy(SCnpj,13,1)) and
(IntToStr(vSegDig)=Copy(SCnpj,14,1)) then
Result:=True
else
Result:=False;
end else
Result:=False;
end;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009