Validando CPF

O CPF tem um dígito verificador que é definido através de um cálculo. Isso possibilita um teste para verificar se o CPF digitado está correto.

Veja como validar CPF nas suas aplicações.

1º Coloque o código abaixo, acima do procedimento que irá fazer a chamada da verificação.


function Cpf(CPF_Text: string): boolean;

var n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;

d1,d2: integer;

digitado, calculado: string;

begin

n1:=StrToInt(CPF_Text[1]);

n2:=StrToInt(CPF_Text[2]);

n3:=StrToInt(CPF_Text[3]);

n4:=StrToInt(CPF_Text[5]);

n5:=StrToInt(CPF_Text[6]);

n6:=StrToInt(CPF_Text[7]);

n7:=StrToInt(CPF_Text[9]);

n8:=StrToInt(CPF_Text[10]);

n9:=StrToInt(CPF_Text[11]);

d1:=n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;

d1:=11-(d1 mod 11);

if d1>=10 then d1:=0;

d2:=d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;

d2:=11-(d2 mod 11);

if d2>=10 then

d2:=0;

calculado:=inttostr(d1)+inttostr(d2);

digitado:=CPF_Text[13]+CPF_Text[14];

if calculado=digitado then

Cpf:=true

else

Cpf:=false;

end;

2º No evento OnExit do campo onde será digitado o CPF coloque o código abaixo:

If NOMECAMPO.Text<>'' Then

If Cpf(NOMECAMPO.Text)=False Then

Begin

MessageDlg('CPF informado é incorreto!',mtError, [mbOk],0);

NOMECAMPO.SetFocus;

End;

* Troque NOMECAMPO pela propriedade Name do campo.

Pronto agora é só testar!