Buscar

Função de verificação de cpf e cnpf

Código

// Essa função testa a validade tanto de CPFs quanto de CNPJs
// Para tanto basta informar o mesmo que a função identificará
// a verificação apropriada a ser feita
// A pontuação do CPF ou CNPJ não é necessária mas pode ser incluída a string sem maiores problemas

Function ValidaCPFCNPJ(CPFCNPJ: string): boolean;
var
  count, tam, i, soma: integer;
  num: array of integer;
begin
  Result:=False;
  tam:=0;
  SetLength(num,tam);
  for i:=1 to Length(CPFCNPJ) do
    if CPFCNPJ[i] in ['0'..'9'] then
    begin
      inc(tam);
      SetLength(num,tam);
      Val(CPFCNPJ[i],num[tam-1],soma);
    end;

  if not(tam in [11,14]) then Exit;

  count:=2;
  soma:=0;
  for i:=Length(num)-3 downto 0 do
  begin
    soma:=soma+(num[i]*count);
    inc(count);
    if (tam = 14) and (count > 9) then count:=2;
  end;
  soma:=11-(soma mod 11);
  if soma > 9 then soma:=0;

  if not(num[tam-2]=soma) then Exit;

  soma:=soma*2;
  count:=3;
  for i:=Length(num)-3 downto 0 do
  begin
    soma:=soma+(num[i]*count);
    inc(count);
    if (tam = 14) and (count > 9) then count:=2;
  end;
  soma:=11-(soma mod 11);
  if soma > 9 then soma:=0;

  if not(num[tam-1]=soma) then Exit;

  Result:=True;
end;

// Exemplo de utilização:
  if ValidaCPFCNPJ('041.935.186-80') then
    ShowMessage('CPF válido')
  else
    ShowMessage('CPF inválido');

  if ValidaCPFCNPJ('11.222.333/0001-81') then
    ShowMessage('CNPJ válido')
  else
    ShowMessage('CNPJ inválido');

// Revisado por Diego de Queiroz Macedo
// garoto_burns@delphi.eti.br

Publicidade

Vote na dica




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


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 28/08/03
Por: Francisco Marcus Alves Afonso
Visualizada: 4469 vezes

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