|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
gtramonte Aprendiz
Registrado: Segunda-Feira, 27 de Setembro de 2010 Mensagens: 117
|
Enviada: Sex Nov 29, 2019 3:30 am Assunto: validando cnpj |
|
|
Ola, Caros Colegas! Estou usando um comando para validar cnpj:
function TFrmChecaCNPJCPF.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
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);
n3:=StrToInt(num[3]);
n4:=StrToInt(num[4]); // Retira cada numero do Edit, e joda p/ variavel
n5:=StrToInt(num[5]);
n6:=StrToInt(num[6]);
n7:=StrToInt(num[7]);
n8:=StrToInt(num[8]);
n9:=StrToInt(num[9]);
n10:=StrToInt(num[10]);
n11:=StrToInt(num[11]);
n12:=StrToInt(num[12]);
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[13]+num[14];
if calculado=digitado then
cnpj:=true
else
cnpj:=false;
end;
ele valida apenas quando o edit é preenchido sem mascara, quando ta com mascara da erro. alguém sabe me dizer como corrigir? |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Sex Nov 29, 2019 8:33 am Assunto: |
|
|
usa o ACBrValidador _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Nov 29, 2019 8:39 am Assunto: |
|
|
Cara tente isto aqui, mas não testei, fiz de cabeça, pois não tenho delphi aqui:
Código: |
function OnlyCharAlpha(S: string): string;
var
I: Integer;
begin
for I := Low(S) to High(S) do
if S[I] in ['0'..'9'] then
Result := Result + S[I];
end;
|
A propósito, esta função de checagem de cnpj não aborda cnpjs como 11.111.111/1111-111 e assim por diante, este costuma passar batidos, assim como nos cpfs.
No ACBr tem funções de checagem de CNPJ e outros, dê uma olhada, pois lá é bem completa a função.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
|
gtramonte Aprendiz
Registrado: Segunda-Feira, 27 de Setembro de 2010 Mensagens: 117
|
Enviada: Qua Dez 04, 2019 7:37 pm Assunto: |
|
|
Obrigado meu caro colega. deu certo. |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Dez 16, 2019 10:42 am Assunto: |
|
|
Eis uma função para checagem de CNPJ:
Código: | unit ValidaCNPJ;
interface
function isCNPJ(CNPJ: string): boolean;
function imprimeCNPJ(CNPJ: string): string;
implementation
uses SysUtils; // necessário para utilizar a função "StrToInt"
function isCNPJ(CNPJ: string): boolean;
var dig13, dig14: string;
sm, i, r, peso: integer;
begin
// length - retorna o tamanho da string do CNPJ (CNPJ é um número formado por 14 dígitos)
if ((CNPJ = '00000000000000') or (CNPJ = '11111111111111') or
(CNPJ = '22222222222222') or (CNPJ = '33333333333333') or
(CNPJ = '44444444444444') or (CNPJ = '55555555555555') or
(CNPJ = '66666666666666') or (CNPJ = '77777777777777') or
(CNPJ = '88888888888888') or (CNPJ = '99999999999999') or
(length(CNPJ) <> 14))
then begin
isCNPJ := false;
exit;
end;
// "try" - protege o código para eventuais erros de conversão de tipo através da função "StrToInt"
try
{ *-- Cálculo do 1o. Digito Verificador --* }
sm := 0;
peso := 2;
for i := 12 downto 1 do
begin
// StrToInt converte o i-ésimo caractere do CNPJ em um número
sm := sm + (StrToInt(CNPJ[i]) * peso);
peso := peso + 1;
if (peso = 10)
then peso := 2;
end;
r := sm mod 11;
if ((r = 0) or (r = 1))
then dig13 := '0'
else str((11-r):1, dig13); // converte um número no respectivo caractere numérico
{ *-- Cálculo do 2o. Digito Verificador --* }
sm := 0;
peso := 2;
for i := 13 downto 1 do
begin
sm := sm + (StrToInt(CNPJ[i]) * peso);
peso := peso + 1;
if (peso = 10)
then peso := 2;
end;
r := sm mod 11;
if ((r = 0) or (r = 1))
then dig14 := '0'
else str((11-r):1, dig14);
{ Verifica se os digitos calculados conferem com os digitos informados. }
if ((dig13 = CNPJ[13]) and (dig14 = CNPJ[14]))
then isCNPJ := true
else isCNPJ := false;
except
isCNPJ := false
end;
end;
function imprimeCNPJ(CNPJ: string): string;
begin
{ máscara do CNPJ: 99.999.999.9999-99 }
imprimeCNPJ := copy(CNPJ, 1, 2) + '.' + copy(CNPJ, 3, 3) + '.' +
copy(CNPJ, 6, 3) + '.' + copy(CNPJ, 9, 4) + '-' + copy(CNPJ, 13, 2);
end;
end. |
BYE _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|