Criando a Função:
function doCPFValidation(CPF: string): Boolean;
var
dig10, dig11: string;
s, i, r, peso: integer;
begin
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
begin
doCPFValidation := false; exit;
end;
try { *-- Cálculo do 1o. Digito Verificador --* }
s := 0; peso := 10;
for i := 1 to 9 do
begin
s := 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); { Cálculo do 2o. Digito Verificador }
s := 0; peso := 11;
for i := 1 to 10 do
begin
s := 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
doCPFValidation := true
else
doCPFValidation := false;
except
doCPFValidation := false
end;
Como usar está função em seu código:
Pode ser usado no "on exit" de um "edit" ou no próprio botão de Salvar.
procedure TF_ClienteCadastro.edtCPFExit(Sender: TObject);
begin
if edtCPF.Text <> ' . . - ' then
begin
if doCPFValidation(edtCPF.Text) = False then
begin
ShowMessage('CPF '+edtCPF.Text+' invalido !');
edtCPF.SetFocus;
end;
end;
end;
Espero que tenha ajudado!
0 comentários:
Postar um comentário