Nesse post irei mostrar como podemos realizar a verificação de qualquer CPF digitado, informando se o mesmo é válido ou não.
Monte no seu Delphi uma tela similar a que está logo abaixo:
No formulário contém:
2 Labels
2 Edits
1 Botão
2 Edits
1 Botão
unit ValidaCPF;interfacefunction isCPF(CPF: string): boolean;function imprimeCPF(CPF: string): string;implementationuses SysUtils; // necessário para utilizar a função "StrToInt"function isCPF(CPF: string): boolean;var dig10, dig11: string;s, i, r, peso: integer;begin// length - retorna o tamanho da string do CPF (CPF é um número formado por 11 dígitos)if ((CPF = '00000000000') or (CPF = '11111111111') or(CPF = '22222222222') or (CPF = '33333333333') or(CPF = '44444444444') or (CPF = '55555555555') or(CPF = '66666666666') or (CPF = '77777777777') or(CPF = '88888888888') or (CPF = '99999999999') or(length(CPF) <> 11))then beginisCPF := false;exit;end;// "try" - protege o código para eventuais erros de conversão de tipo através da função "StrToInt"try{ *-- Cálculo do 1o. Digito Verificador --* }s := 0;peso := 10;for i := 1 to 9 dobegin// StrToInt converte o i-ésimo caractere do CPF em um números := s + (StrToInt(CPF[i]) * peso);peso := peso - 1;end;r := 11 - (s mod 11);if ((r = 10) or (r = 11))then dig10 := '0'else str(r:1, dig10); // converte um número no respectivo caractere numérico{ *-- Cálculo do 2o. Digito Verificador --* }s := 0;peso := 11;for i := 1 to 10 dobegins := s + (StrToInt(CPF[i]) * peso);peso := peso - 1;end;r := 11 - (s mod 11);if ((r = 10) or (r = 11))then dig11 := '0'else str(r:1, dig11);{ Verifica se os digitos calculados conferem com os digitos informados. }if ((dig10 = CPF[10]) and (dig11 = CPF[11]))then isCPF := trueelse isCPF := false;exceptisCPF := falseend;end;function imprimeCPF(CPF: string): string;beginimprimeCPF := copy(CPF, 1, 3) + '.' + copy(CPF, 4, 3) + '.' +copy(CPF, 7, 3) + '-' + copy(CPF, 10, 2);end;end.
Salve a Unit. (Eu
coloquei o nome de “ValidaCPF”)
Após criar a Unit que
armazena a função que fará verificação do número informado adicione a mesma à Unit principal. (Para adicionar vá no
menu File > Use Unit ou Alt + F11).
Agora dê um duplo clique no botão coloque o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
begin
//Compara se os números informados pelo usuário batem com o cálculo da função “isCPF” da Unit “ValidaCPF”
if isCPF(Edit1.Text)
then Edit2. Text := imprimeCPF(Edit1.Text) //Repete o CPF no Edit2.Text – Se repetir então está correto
else Edit2.Text := 'Erro: CPF inválido !!!'; //Acusa o CPF como inválido
end.
Clique aqui para baixar o fonte
Pronto! Seu projeto agora verifica corretamente os CPFs informados.
Qualquer dúvida contatem-me por e-mail: wesleymenezzes@gmail.com
Obrigado e não esqueçam de curtir e compartilhar nossos posts.
Deus abençoe.
Nenhum comentário:
Postar um comentário