Buscar

Validação de CNPJ

Código

{Segue há minha segunda dica uma função para validar CNPJ, testem caso ocorra algum problema reporte para a correção do mesmo. Espero que ajude e abraço.)

//Função para validação de CNPJ
function ValidaCNPJ(CNPJ: string): Boolean;
var
  i, digito1, digito2, cont: integer;
begin
  //Deleta a mascara do CPF caso tenho
  Delete(CNPJ, AnsiPos('.', CNPJ), 1);
  Delete(CNPJ, AnsiPos('.', CNPJ), 1);
  Delete(CNPJ, AnsiPos('/', CNPJ), 1);
  Delete(CNPJ, AnsiPos('-', CNPJ), 1);
  if (Length(CNPJ) <> 14) then //Verifica se o mesmo possui 14 digitos exatos
    Result := False
  else if (CNPJ = '00000000000000') then //Verifica se todos os digitos são 0
    Result := False
  else
  begin
    digito1 := 0;
    digito2 := 0;
    cont := 2;
    try //Caso ocorra algum erro não previsto retorna False
      for i := 12 downto 1 do
      begin
        if cont = 10 then
          cont := 2;
        digito1 := digito1 + (StrToInt(CNPJ[i]) * cont);
        digito2 := digito2 + (StrToInt(CNPJ[i + 1]) * cont);
        cont := cont + 1;
      end;
      digito2 := digito2 + (StrToInt(CNPJ[1]) * 6);
      if (digito1 mod 11) < 2 then
        digito1 := 0
      else
        digito1 := 11 - (digito1 mod 11);
      if (digito2 mod 11) < 2 then
        digito2 := 0
      else
        digito2 := 11 - (digito2 mod 11);
      if (digito1 <> StrToInt(CNPJ[13])) or (digito2 <> StrToInt(CNPJ[14])) then
        Result := False
      else
        Result := True;
    except
      Result := False;
    end;
  end;
end;

Publicidade

Vote na dica




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


Detalhes da dica

Categoria: Forms
Adicionada dia: 30/03/10
Por: Rafael Dani
Visualizada: 5739 vezes

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