Seria bom ver a função pra saber como ela funciona. Mas eu tenho uma função que faz isso. Para usá-la basta colocar no evento OnExit do Edit:
ConfereCPF(Sender as TCustomEdit); Segue a função abaixo: function ConfereCPF(Edit : TMaskEdit) : Boolean; var n1,n2,n3,n4,n5,n6,n7,n8,n9,d1,d2: Integer; Digitado, Calculado, Num : String; begin ConfereCpf := True; Num := Edit.Text; Num := StringReplace(Num, '.', '', [rfReplaceAll]); Num := StringReplace(Num, '-', '', [rfReplaceAll]); Num := StringReplace(Num, '_', '', [rfReplaceAll]); if (Trim(Num) <> '') then begin n1 := StrToInt (Num[1]); n2 := StrToInt (Num[2]); n3 := StrToInt (Num[3]); n4 := StrToInt (Num[4]); n5 := StrToInt (Num[5]); n6 := StrToInt (Num[6]); n7 := StrToInt (Num[7]); n8 := StrToInt (Num[8]); n9 := StrToInt (Num[9]); 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 := Num[10] + Num[11]; if (Calculado = Digitado) then ConfereCpf := True else begin ConfereCpf := False; raise exception.Create('CPF não confere!'); Edit.SetFocus; end end; end; [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html