GARANTIR DESCONTO

Fórum Nao consigo validar CPF e CNPJ mascarado! #198448

02/12/2003

0

Galera, faz dois dias que estou lendo, tentando de tudo o que é maneira e nao consigo validar cpf e cnpj com mascara.

Já li varios topicos aqui nesse forum mas nao consegui aplicar no meu programa.

Sou novato em programação, se alguem puder me ajudar ficarei grato.

No msn meu nick é thallesrodrigo@hotmail.com

Se puderem me ajudar ficarei grato!


Imaster

Imaster

Responder

Posts

02/12/2003

Lucas Silva

Bom cara eu não msn naõ, se você detalhar mais ai da pra te ajudar.
qual é a máscara que você colocou pro cnpj e pro cpf?


Responder

Gostei + 0

02/12/2003

Imaster

A mascara para CPF é essa:

000\.000\.000\-00;0;_


Responder

Gostei + 0

02/12/2003

Lucas Silva

Este este método seu de verificar cpf e cnpj, verifica blz quando o cpf ou cnpj está sem máscara??


Responder

Gostei + 0

02/12/2003

Dinorvm

Amigo, já sofri com isso tb, mas, encontrei um pacote de componentes que entre outras coisas, traz um verificador automatico e inclusive com formatação...

chama-se MDLib e pode ser encontrado no endereço:
http://codigolivre.org.br/projects/mdlib

Se tiver dificuldades, pode me contatar:

dinorvm@ig.com.br


Responder

Gostei + 0

02/12/2003

Rafael Mattos

Eu ja tive o mesmo problema que vc dai eu resolvi alterar a função que peguei do clubedelphi.


function CPF(num: string): boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
d1,d2: integer;
digitado, calculado: string;
begin
// 000.000.001-91
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);
n3:=StrToInt(num[3]);

n4:=StrToInt(num[5]);
n5:=StrToInt(num[6]);
n6:=StrToInt(num[7]);

n7:=StrToInt(num[9]);
n8:=StrToInt(num[10]);
n9:=StrToInt(num[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:=num[13]+num[14];
if calculado=digitado then
cpf:=true
else
cpf:=false;
end;

function CNPJ(num: string): boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12: integer;
d1,d2: integer;
digitado, calculado: string;
begin
// 00.000.000/0001-91
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);

n3:=StrToInt(num[4]);
n4:=StrToInt(num[5]);
n5:=StrToInt(num[6]);

n6:=StrToInt(num[8]);
n7:=StrToInt(num[9]);
n8:=StrToInt(num[10]);

n9:=StrToInt(num[12]);
n10:=StrToInt(num[13]);
n11:=StrToInt(num[14]);
n12:=StrToInt(num[15]);

d1:=n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
d1:=11-(d1 mod 11);
if d1>=10 then
d1:=0;
d2:=d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
d2:=11-(d2 mod 11);
if d2>=10 then
d2:=0;
calculado:=inttostr(d1)+inttostr(d2);
digitado:=num[17]+num[18];
if calculado=digitado then
CNPJ:=true
else
CNPJ:=false;
end;



Procedure ToValidate(NomeEdit : TDBEdit; Valid : String); // CPF ou CNPJ
begin
if NomeEdit.DataSource.State <> dsBrowse then begin
if Valid = ´CNPJ´ then begin
if NomeEdit.Text = ´ . . / - ´ then
Exit; end
else if Valid = ´CPF´ then begin
if NomeEdit.Text = ´ . . - ´ then
Exit;
end;
if Valid = ´CNPJ´ then begin
if not CNPJ(NomeEdit.Text) then begin
beep;
MessageDlg(´CNPJ Incorreto´,mtInformation,[mbOK],0);
NomeEdit.SetFocus;
Exit;
end; end
else if Valid = ´CPF´ then begin
if not CPF(NomeEdit.Text) then begin
beep;
MessageDlg(´CPF Incorreto´,mtInformation,[mbOK],0);
NomeEdit.SetFocus;
Exit;
end;
end;
end;
end;



No OnExit do DBEdit vc coloca assim:

procedure TfrmPrincipal.DBEdit1Exit(Sender: TObject);
begin
ToValidate(NomeEdit,´CPF´); // ou CNPJ se deseja verificar
end;


Responder

Gostei + 0

02/12/2003

Raul Segabinazzi

O mais simples seria você fazer, no evendo on exit, primeiro a validação do CPF ou CGC para depois fazer a formatação usando copy. ex.
copy(cpf,1,3)+´.´+copy(cpf,4,3)+´.´+copy(cpf,7,3)+´-´+copy(cpf,10,2);


Responder

Gostei + 0

03/12/2003

Imaster

Consegui

Valeu as dicas


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar