sábado, 17 de outubro de 2009

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

// 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

Nenhum comentário:

Postar um comentário