// 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
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário