Como foi dificil fazer isso..
sem mais vou postar o código e escrever o que deve-se fazer com ele...
Bibliotecas
Código direto na classe...
Código da classe
//Verificador de cpf
int valor, fator, dig1, dig2, i;
String num;
if(ECpf->Text.Length()==14 ) {
//Onde "ECpf" é o campo onde a pessoa digita o valor do cpf.
//Obs.: nesse caso o cpf é armazenado com 14 dígitos, pois considera os pontos e o traço.
num = ECpf->Text.SubString(1,3);
num = num + ECpf->Text.SubString(5,3);
num = num + ECpf->Text.SubString(9,3);
num = num + ECpf->Text.SubString(13,2);
/* PRIMEIRO DIGITO VERIFICADOR */
int aux = ((atoi(num.SubString(1,1).c_str())*10) + (atoi(num.SubString(2,1).c_str())*9)+ (atoi(num.SubString(3,1).c_str())*8)+ (atoi(num.SubString(4,1).c_str())*7)+ (atoi(num.SubString(5,1).c_str())*6)+( atoi(num.SubString(6,1).c_str())*5)+ (atoi(num.SubString(7,1).c_str())*4)+ (atoi(num.SubString(8,1).c_str())*3)+ (atoi(num.SubString(9,1).c_str())*2));
valor = aux;
fator = 0;
fator = valor%11;
dig1 = fator< valor =" 0;" aux2 =" ((atoi(num.SubString(1,1).c_str())*11)" valor =" aux2;" fator =" valor%11;" dig2 =" fator" v =" ECpf-">Text.SubString(13,1);
String d = ECpf->Text.SubString(14,1);
int Iv = atoi(v.c_str());
int Id = atoi(d.c_str());
if ((Iv == dig1) && (Id == dig2))
ShowMessage("CPF ok");
else
ShowMessage("CPF inválido");
}
Código em uma classe separada...
Código da Classe
class VerificaCpf
{
public:
int ValidaCpf(String);
String Cpf;
VerificaCpf(void){};
~VerificaCpf(void){};
};
int VerificaCpf::ValidaCpf(String cpf)
{
int valor, fator, dig1, dig2, i;
String num;
String Cpf = cpf;
num = Cpf.SubString(1,3);
num = num + Cpf.SubString(5,3);
num = num + Cpf.SubString(9,3);
num = num + Cpf.SubString(13,2);
/* PRIMEIRO DIGITO VERIFICADOR */
int aux = ((atoi(num.SubString(1,1).c_str())*10) + (atoi(num.SubString(2,1).c_str())*9)+ (atoi(num.SubString(3,1).c_str())*8)+ (atoi(num.SubString(4,1).c_str())*7)+ (atoi(num.SubString(5,1).c_str())*6)+( atoi(num.SubString(6,1).c_str())*5)+ (atoi(num.SubString(7,1).c_str())*4)+ (atoi(num.SubString(8,1).c_str())*3)+ (atoi(num.SubString(9,1).c_str())*2));
valor = aux;
fator = 0;
fator = valor%11;
dig1 = fator< 2 ? 0 : 11-fator;
/* SEGUNDO DIGITO VERIFICADOR */
valor = 0;
int aux2 = ((atoi(num.SubString(1,1).c_str())*11) + (atoi(num.SubString(2,1).c_str())*10)+ (atoi(num.SubString(3,1).c_str())*9)+ (atoi(num.SubString(4,1).c_str())*8)+ (atoi(num.SubString(5,1).c_str())*7)+( atoi(num.SubString(6,1).c_str())*6)+ (atoi(num.SubString(7,1).c_str())*5)+ (atoi(num.SubString(8,1).c_str())*4)+ (atoi(num.SubString(9,1).c_str())*3)+ (atoi(num.SubString(10,1).c_str())*2));
valor = aux2;
fator = valor%11;
dig2 = fator < 2 ? 0 : 11-fator;
String v = Cpf.SubString(13,1);
String d = Cpf.SubString(14,1);
int Iv = atoi(v.c_str());
int Id = atoi(d.c_str());
if ((Iv == dig1) && (Id == dig2))
return 1;
else
return 0;
}
e será salva em ".h"