Fórum CPF #154957
15/04/2003
0
ex.: Tenho um campo ´DbEdit´ e neste campo quero poder digitar um CPF e ter a seguinte informação, se o CPF é valido ou não.
Agradeco de antemão.
Rafael Cabral
Evite usar no título coisas como ´urgente´ ou qualquer coisa que não seja o seu problema
Rscrj
Curtir tópico
+ 0Posts
15/04/2003
Zacca
ou se quiser me mande um email para marcelo@mazainformatica.com.br que ainda esta semana ou mais tardar semana que vem lhe envio esta funcao...
Gostei + 0
15/04/2003
Rodney
var CPF :array [1..11]of integer;
CNPJ :array [1..14]of integer;
i,d1,d2:integer;
calculado,NUM: string;
begin
NUM := campo_CPF.value;
//redira o ponto,traço e barra do numero
for i := 1 to length(NUM) do
if (copy(NUM,i,1)=´.´) or (copy(NUM,i,1)=´-´) or
(copy(NUM,i,1)=´/´) OR (copy(NUM,i,1)=´ ´)then
delete(NUM,i,1);
case Length(NUM) of
11: //se for digitado 11 caracteres faz o calculo de cpf
begin
//preenche o array com o cpf
for i := 1 to Length(NUM) do
cpf[i] := strtoint(NUM[i]);
//calcula o primeiro digito verificador
d1:= cpf[9]*2 + cpf[8]*3 + cpf[7]*4 + cpf[6]*5 + cpf[5]*6 + cpf[4]*7 +
cpf[3]*8 + cpf[2]*9 + cpf[1]*10;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
//fim do calculo do primeiro digito verificador
//calcula o segundo digito verificador
d2:= cpf[10]*2 + cpf[9]*3 + cpf[8]*4 + cpf[7]*5 + cpf[6]*6 + cpf[5]*7 +
cpf[4]*8 + cpf[3]*9 + cpf[2]*10;
d2:=11-(d2 mod 11);
if d2>=10 then d2:=0;
//fim do calculo do segundo digito verificador
//verifica se o cpf e valido
calculado:=inttostr(d1)+inttostr(d2);
if calculado <> NUM[10]+NUM[11] then
BEGIN
Application.MessageBox(´CPF invalido operação cancelada.´,´AVISO´,MB_OK+MB_ICONHAND);
abort;
end;//if
end;//9:CPF
14: //se for digitado 14 caracteres faz o calculo de CNPJ
begin
//preenche o array com o cnpj
for i := 1 to Length(num) do
CNPJ[i] := strtoint(num[i]);
//calcula o primeiro digito verificador
d1:= CNPJ[12]*2 + CNPJ[11]*3 + CNPJ[10]*4 + CNPJ[9]*5 + CNPJ[8]*6 +
CNPJ[7]*7 + CNPJ[6]*8 + CNPJ[5]*9 + CNPJ[4]*2 + CNPJ[3]*3 +
CNPJ[2]*4 + CNPJ[1]*5;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
//fim do calculo do primeiro digito verificador
//calcula o segundo digito verificador
d2:=CNPJ[13]*2 + CNPJ[12]*3 + CNPJ[11]*4 + CNPJ[10]*5 + CNPJ[9]*6 + CNPJ[8]*7 + CNPJ[7]*8 + CNPJ[6]*9 + CNPJ[5]*2 +
CNPJ[4]*3 + CNPJ[3]*4 + CNPJ[2]*5 + CNPJ[1]*6;
d2:=11-(d2 mod 11);
if d2>=10 then d2:=0;
//fim do calculo do segundo digito verificador
//verifica se o cnpj e valido
calculado:=inttostr(d1)+inttostr(d2);
if calculado <> num[13]+num[14] then
BEGIN
Application.MessageBox(´CNPJ invalido operação cancelada.´,´AVISO´,MB_OK+MB_ICONHAND);
abort;
end;//if
end;//14:CNPJ
else begin
showmessage(´Quantidade de digitos incoretos operação cancelada.´);
abort;
end;//esle
end;//case
Gostei + 0
15/04/2003
Rscrj
Gostei + 0
16/04/2003
Rodney
Mas como vc colocou em um botao então vc deve fazer assim.
ex:
tem uma variavel chamada Num do tipo String ela vai receber o CPF que
foi digitado.
procedure TForm1.Button1Click(Sender: TObject);
var num:string;
begin
num:= queryCPF.Value;
end;
Esta variavel vai alimentar o array para que ele fasa o calculo
Qualquer duvida me mande um mail
rodneyteixeira@hotmail.com
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)