Delphi: Validando CPF
Hoje em dia todas as pessoas físicas possuem CPF e por isso as vezes se torna necessário que seja validado se o mesmo numero informado por uma pessoa estão corretos, para isto tenho essa função que faz isso, ela retorna "true" e "false" (verdadeiro e falso respectivamente).
Criando a Função:
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.
Espero que tenha ajudado!
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!
Tecnologia do Blogger.
