Com o exemplo a seguir podemos facilmente verificar se o texto digitado é um número de CNPJ (Cadastro Nacional da Pessoa Jurídica) válido.
Abra o Delphi e crie um novo projeto através do menu File -> New -> VCL Forms Application - Delphi, e altere as propriedade do Form:
Caption = VALIDAR CNPJ
Name = Frm_Principal
Position = poDesktopCenter
Adicione ao formulário um TLabel, um TEdit e um TButton disponível na paleta Standard do Delphi (Tool Palette -> Standard) e altere suas propriedades conforme baixo:
PROPERTIES TLABEL:
Caption = CNPJ
PROPERTIES TEDIT1:
Name = edtCNPJ
PROPERTIES TBUTTON:
Caption = Validar
Name = btnValidar
Deixe o layout parecido com o da imagem a seguir.
Na seção private declarations adicione o código abaixo:
private
{ Private declarations }
function ValidaCNPJ(CPF: string): Boolean;
Com o cursor posicionado na mesma linha da function, pressione CTRL + SHIFT + C, para criar a estrutura da function.
Deixe o código ValidaCNPJ da seguinte forma:
function TFrm_Principal.ValidaCNPJ(CNPJ: string): Boolean;
var
I: integer;
Want: char;
Wvalid: Boolean;
Wdigit1, Wdigit2: integer;
Function StrNumber(S: String): String;
var
X: integer;
begin
Result := '';
For X := 1 To Length(S) do
begin
Case char(S[X]) of
'0' .. '9':
Result := Result + S[X];
End;
end;
end;
begin
Wdigit1 := 0;
Wdigit2 := 0;
Want := CNPJ[1];
// variavel para testar se o CNPJ é repetido como 111.111.111-11
CNPJ := StrNumber(CNPJ); // Limpa o que não for numero
if Length(CNPJ) < 14 then
begin
Result := False;
exit;
end;
// testar se o CNPJ é repetido como 111.111.111-11
for I := 1 to Length(CNPJ) do
begin
if CNPJ[I] <> Want then
begin
Wvalid := True;
// se o CNPJ possui um digito diferente ele passou no primeiro teste
Break;
end;
end;
// se o CNPJ é composto por numeros repetido retorna falso
if not Wvalid then
begin
Result := False;
exit;
end;
// executa o calculo para o primeiro verificador
for I := 1 to 12 do
begin
if I + 1 <= 9 then
Wdigit1 := Wdigit1 + (StrToInt(CNPJ[13 - I]) * (I + 1))
else if I + 1 > 9 then
Wdigit1 := Wdigit1 + (StrToInt(CNPJ[13 - I]) * (I - 7));
end;
Wdigit1 := 11 - (Wdigit1 mod 11);
if Wdigit1 >= 10 then
Wdigit1 := 0;
// verifica se o 1° digito confere
if IntToStr(Wdigit1) <> CNPJ[13] then
begin
Result := False;
exit;
end;
Wdigit2 := Wdigit1 * 2;
for I := 1 to 12 do
begin
if I <= 7 then
Wdigit2 := Wdigit2 + (StrToInt(CNPJ[13 - I]) * (I + 2))
else if I > 7 then
Wdigit2 := Wdigit2 + (StrToInt(CNPJ[13 - I]) * (I - 6));
end;
Wdigit2 := 11 - (Wdigit2 mod 11);
if Wdigit2 >= 10 then
Wdigit2 := 0;
// confere o 2° digito verificador
if IntToStr(Wdigit2) <> CNPJ[14] then
begin
Result := False;
exit;
end;
// se chegar até aqui o CNPJ é valido
Result := True;
end;
Volte para o Frm_Principal através do menu View -> Toggle Form/Unit ou pressionando F12.
Dê um duplo no btnValidar e adicione o código abaixo:
procedure TFrm_Principal.btnValidarClick(Sender: TObject);
begin
if ValidaCNPJ(edtCNPJ.Text) then
Application.MessageBox('CNPJ válido.', 'Aviso', mb_iconinformation + mb_ok)
else
Application.MessageBox('CNPJ inválido', 'Aviso', MB_ICONERROR + mb_ok);
end;
Salve as alterações (File -> Save All), coloque o nome uPrincipal para Unit e ValidarCNPJ para o nome do projeto.
Pronto, execute a aplicação (menu Run -> Run ou Pressione F9) e veja o resultado.
Gostou? Deixe seu comentário... Convido você a seguir meu blog, sua presença é bem vinda!【ツ】
Download
Nenhum comentário:
Postar um comentário