Com o exemplo a seguir podemos facilmente verificar se o texto digitado é um número de CPF (Cadastro de Pessoas Físicas) 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 CPF
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 = CPF
PROPERTIES TEDIT1:
Name = edtCPF
PROPERTIES TBUTTON:
Caption = Validar
Name = btnValidar
Deixe o layout parecido com o da imagem a seguir.
Acesse o código do Frm_Principal através do menu View -> Toggle Form/Unit ou pressionando F12.
Na seção private declarations adicione o código abaixo:
private
{ Private declarations }
function ValidaCPF(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 ValidaCPF da seguinte forma:
function TFrm_Principal.ValidaCPF(CPF: string): Boolean;
var
i: Integer;
cpfSoNumero: String;
cpfRepetido: Boolean;
digito1, digito2: Integer;
begin
result := False;
// Limpa o que não for numero
cpfSoNumero := '';
for i := 1 To length(CPF) do
begin
Case char(CPF[i]) of
'0' .. '9':
cpfSoNumero := cpfSoNumero + CPF[i];
End;
end;
// verifica se possui os 11 digitos
if length(cpfSoNumero) <> 11 then
begin
exit;
end;
// testar se o cpf é repetido como 000.000.000-00
cpfRepetido := True;
for i := 2 to length(cpfSoNumero) do
begin
if cpfSoNumero[1] <> cpfSoNumero[i] then
begin
// se o cpf possui um digito diferente ele passou no teste
cpfRepetido := False;
break;
end;
end;
// se o CPF é composto por numeros repetido retorna true
if (cpfRepetido) then
begin
exit;
end;
// executa o calculo para o primeiro digito verificador
digito1 := 0;
for i := 1 to 9 do
begin
digito1 := digito1 + (StrToInt(cpfSoNumero[10 - i]) * (i + 1));
end;
{ formula do primeiro verificador soma=1°*2+2°*3+3°*4.. até 9°*10 digito1 = 11 - soma mod 11 se digito > 10 digito1 = 0 }
digito1 := ((11 - (digito1 mod 11)) mod 11) mod 10;
// verifica se o 1° digito confere
if inttostr(digito1) <> cpfSoNumero[10] then
begin
exit;
end;
// executa o calculo para o segundo digito verificador
digito2 := 0;
for i := 1 to 10 do
begin
digito2 := digito2 + (StrToInt(cpfSoNumero[11 - i]) * (i + 1));
end;
{ formula do segundo verificador soma=1°*2+2°*3+3°*4.. até 10°*11 digito2 = 11 - soma mod 11 se digito > 10 digito2 = 0 }
digito2 := ((11 - (digito2 mod 11)) mod 11) mod 10;
// confere o 2° digito verificador
if inttostr(digito2) <> cpfSoNumero[11] then
begin
exit;
end;
// se chegar até aqui o CPF é 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.btnValidarCPFClick(Sender: TObject);
begin
if ValidaCPF(edtCPF.Text) then
Application.MessageBox('CPF válido.', 'Aviso', mb_iconinformation + mb_ok)
else
Application.MessageBox('CPF inválido', 'Aviso', MB_ICONERROR + mb_ok);
end;
Salve as alterações (File -> Save All), coloque o nome uPrincipal para Unit e ValidarCPF 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!【ツ】
Nenhum comentário:
Postar um comentário