Buscar

Validar CNPJ

Código

function ValidaCNPJ(sCNPJ:String): Boolean;
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;

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Forms
Adicionada dia: 26/02/10
Por: Walter Lucchesi Dias
Visualizada: 2198 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009