| 
			
				|  | 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: 9100
 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.
 
 |  |