Skip to content

CNPJ Métodos

Anderson Marques Ribeiro edited this page Nov 18, 2018 · 2 revisions

Índice

  1. CalcularDigito
  2. ValidarCNPJ
  3. Extrair

  1. class function CalcularDigito(ACNPJ: AnsiString; out ADigito: AnsiString): Boolean;
    ACNPJ: Número do CNPJ, com número da filial e sem o dígito verificador, com ou sem os dígitos de formatação.
    ADigito: armazena o dígito verificador calculado pelo método, caso a operação seja bem-sucedida.
    Resultado: valor booleano se foi possível calcular o dígito (ACNPJ contém um CNPJ válido).
    Exceções: nenhuma.
    Calcula o dígito verificador para um CNPJ válido (número e filial).
    O CNPJ fornecido pode ou não conter os dígitos de formatação, mas estes não podem ser parcial, senão o número é considerado inválido.
    Ex.:
var
  strDigito: AnsiString;
begin
  if TCNPJ.CalcularDigito('123456780001', strDigito) then // O número fornecido é válido (número e filial)
    Writeln(strDigito); // Imprime 95
  if TCNPJ.CalcularDigito('12.345.678/0001', strDigito) then // O número fornecido é válido, com formatação
    Writeln(strDigito); // Imprime 95
  if TCNPJ.CalcularDigito('12.345678/0001', strDigito) then // O número fornecido não é válido
    Writeln(strDigito); // Não vai ser impresso.
  if TCNPJ.CalcularDigito('12345678001', strDigito) then // O número fornecido não é válido: 11 dígitos e não 12.
    Writeln(strDigito); // Não vai ser impresso.
end;

  1. class function ValidarCNPJ(ACNPJ: AnsiString): Boolean;
    ACNPJ: string contendo o número do CNPJ (completo, inclusive o dígito verificador).
    Resultado: True se a string contém um CNPJ válido.
    Exceções: nenhuma.
    O método realiza testes para determinar se o número de CNPJ contido em ACNPJ é válido. Além de determinar se todos os dígitos são número, também verifica se o dígito (dois últimos dígitos), são válidos.
    O número pode ou não conter os dígitos de formatação, contanto que completos. Se forem fornecidos dígitos de formatação parcialmente, o número é considerado inválido.
    Ex.:
begin
  if TCNPJ.ValidarCNPJ('12345678000195') then
    Writeln('Válido'); // O texto é impresso.
  if TCNPJ.ValidarCNPJ('12.345.678/0001-95') then
    Writeln('Válido'); // O texto é impresso.
  if TCNPJ.ValidarCNPJ('123456780001') then
    Writeln('Válido'); // Não será impresso, pois há menos dígitos que os 14 que constituem o CNPJ.
  if TCNPJ.ValidarCNPJ('12.345.6780001-95') then
    Writeln('Válido'); // Não será impresso, pois os dígitos de formatação estão incompletos.
  if TCNPJ.ValidarCNPJ('12345678X00195') then
    Writeln('Válido'); // Não será impresso, pois há uma letra na string.
end;

  1. class function Extrair(ATexto: AnsiString; out AResultado: TDadosExtraidosArray): Integer;
    ATexto: texto para pesquisa de CNPJs.
    AResultado: armazena lista com os CNPJs forem encontrados na pesquisa.
    Resultado: inteiro com a quantidade de CNPJs encontrados em ATexto.
    Exceções: nenhuma.
    Ex.:
var
  ade: TDadosExtradidosArray;
  i: Integer;
begin
  SetLength(ade, 0);
  Writeln('Foram encontados ', TCNPJ.Extrair('Este é o CNPJ: 12.345.678/0001-95', ade), ' CNPJ(s).'); // Imprime: Foram encontrados 1 CNPJ(s).
  for i := 0 to High(ade) do
  with ade[i] do
    Writeln(Dados); // Imprime 12.345.678/0001-95
end;