Validando CNPJ
O CNPJ pode ser verificado através de um cálculo do dígito verificador. Isso é interessante para suas aplicações pois impede que sejam informados CNPJ inválidos.
1º Coloque o código abaixo, acima do procedimento que irá fazer a chamada da verificação.
function Cnpj(xCNPJ: String):Boolean;
Var
d1,d4,xx,nCount,fator,resto,digito1,digito2 : Integer;
Check : String;
begin
d1 := 0;
d4 := 0;
xx := 1;
for nCount := 1 to Length( xCNPJ )-2 do
begin
if Pos( Copy( xCNPJ, nCount, 1 ), '/-.' ) = 0 then
begin
if xx < 5 then
begin
fator := 6 - xx;
end
else
begin
fator := 14 - xx;
end;
d1 := d1 + StrToInt( Copy( xCNPJ, nCount, 1 ) ) * fator;
if xx < 6 then
begin
fator := 7 - xx;
end
else
begin
fator := 15 - xx; end;
d4 := d4 + StrToInt( Copy( xCNPJ, nCount, 1 ) ) * fator;
xx := xx+1;
end;
end;
resto := (d1 mod 11);
if resto < 2 then
begin
digito1 := 0;
end
else
begin
digito1 := 11 - resto;
end;
d4 := d4 + 2 * digito1;
resto := (d4 mod 11);
if resto < 2 then
begin
digito2 := 0;
end
else
begin
digito2 := 11 - resto;
end;
Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCNPJ,succ(length(xCNPJ)-2),2) then
begin
Result := False;
end
else
begin
Result := True;
end;
end;
2º No evento OnExit do campo onde será digitado o CPF coloque o código abaixo:
If NOMECAMPO.Text<>'' Then
If Cnpj(NOMECAMPO.Text)=False Then
Begin
MessageDlg('CNPJ informado é incorreto!',mtError, [mbOk],0);
NOMECAMPO.SetFocus;
End;