validar cpf / cnpj
30/01/2006
0
- pessoal, eu usava um componente que validava o cpf / cnpj, porem dava muito problema. consegui as funções de validação do mesmo no dicas e truques delphi, porem nunca trabalhei com elas.
gostaria de saber como faço pra validar eles no Tedit, ou seja, em que evento do edit eu valido as funções e como...
abraços!
gostaria de saber como faço pra validar eles no Tedit, ou seja, em que evento do edit eu valido as funções e como...
abraços!
function CalculaCnpjCpf(Numero : String) : Boolean; Var i,d,b, Digito : Byte; Soma : Integer; CNPJ : Boolean; DgPass, DgCalc : String; begin Result := False; Numero := ApenasNumerosStr(Numero); // Caso o número não seja 11 (CPF) ou 14 (CNPJ), aborta Case Length(Numero) of 11: CNPJ := False; 14: CNPJ := True; else Exit; end; // Separa o número do digito DgCalc := ´´; DgPass := Copy(Numero,Length(Numero)-1,2); Numero := Copy(Numero,1,Length(Numero)-2); // Calcula o digito 1 e 2 For d := 1 to 2 do begin B := IIF(D=1,2,3); // BYTE SOMA := IIF(D=1,0,STRTOINTDEF(DGCALC,0)*2); for i := Length(Numero) downto 1 do begin Soma := Soma + (Ord(Numero[I])-Ord(´0´))*b; Inc(b); If (b > 9) And CNPJ Then b := 2; end; Digito := 11 - Soma mod 11; If Digito >= 10 then Digito := 0; DgCalc := DgCalc + Chr(Digito + Ord(´0´)); end; Result := DgCalc = DgPass; end; function ApenasNumerosStr(pStr:String): String; Var I: Integer; begin Result := ´´; For I := 1 To Length(pStr) do If pStr[I] In [´1´,´2´,´3´,´4´,´5´,´6´,´7´,´8´,´9´,´0´] Then Result := Result + pStr[I]; end; function IIf(pCond:Boolean;pTrue,pFalse:Variant): Variant; begin If pCond Then Result := pTrue else Result := pFalse; end;
Mahdak
Curtir tópico
+ 0
Responder
Posts
30/01/2006
Franthesco
Amigo, tente usar assim:
// DECLARA NA TYPE
function cpf(num: string): boolean;
// ESTE É O CÓDIGO
function cpf(num: string): boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
d1,d2: integer;
digitado, calculado: string;
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
cpf := true
else
cpf:=false;
end;
// NO ON EXIT DO EDIT COLOCA ASSIM
IF NOT CPF(Edit1.Text) Then
BEGIN
ShowMessage (´CPF INCORRETO!´);
end
----AVISE SE NÃO DER CERTO----
Abraços...
// DECLARA NA TYPE
function cpf(num: string): boolean;
// ESTE É O CÓDIGO
function cpf(num: string): boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
d1,d2: integer;
digitado, calculado: string;
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
cpf := true
else
cpf:=false;
end;
// NO ON EXIT DO EDIT COLOCA ASSIM
IF NOT CPF(Edit1.Text) Then
BEGIN
ShowMessage (´CPF INCORRETO!´);
end
----AVISE SE NÃO DER CERTO----
Abraços...
Responder
20/03/2020
Emerson Nascimento
basta fazer o que o Franthesco disse, porém com a função passada pelo Mahdak.
Responder
Clique aqui para fazer login e interagir na Comunidade :)