Correção de Erro estranho de sintaxe

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Fernando Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 24 Set 2016 12:53
Localização: Dourados - MS

Correção de Erro estranho de sintaxe

Mensagem por Fernando Almeida »

Boa tarde,
Sou novo aqui mas agradecia imenso que me ajudassem pois eu tenho desenvolvidos alguns trabalhos em clipper 5.2e e estou a transcreve-los para HMG Extended Unicode.
Como tenho muito pouca experiencia em linguagens gráficas e por objecto vejo-me com algumas dificuldades em ultrapassar os problemas que me vão surgindo.
Eu vou apresentar agora o erro que não consigo corrigir pois acho que está tudo bem em termos de sintaxe e o erro é o seguinte:

tenho esta função que aproveitei de um colega aqui do fórum mas não a consigo compilar, pois dá o seguinte erro : na linha 206 Error E0030 sintax error, "sintax error at ' '
Já alterei a rotina, alterei os ifs por cases, mudei os LEN por HMG_LEN mas não consegui sanar o erro.
Abaixo vou mostrar a rotina.

Código: Selecionar todos

      PROCEDURE VERIFCPF()
      LOCAL aCpfCnpj :=ALLTRIM( Cadastros.TextCpf_Cnpj.Value)
      LOCAL aNewCpf :='', Z   

      FOR z :=1 TO HMG_LEN( aCpfCnpj ) 
         aNewCpf +=Iff(HMG_IsDigit( SUSTR(aCpfCnpj,z,1)), SUBSTR( aCpfCnpj,z,1 ), '')
      NEXT z   
   
      IF Cadastros.TextPessoaj.Value==1
         Cadastros.TextCpf_Cnpj.Value := ALLTRIM( TRANSF( aNewCpf, "@R 99.999.999/9999-99"))
     ELSE  
        Cadastros.TextCpf_Cnpj.Value := ALLTRIM( TRANSF( aNewCpf, "@R 999.999.999-99") )   
     ENDIF
    DO CASE
      CASE aNewCp==''
         RETURN .t.
      CASE HMG_LEN(aNewCpf)>0 .AND. HMG_LEN(aNewCpf)<12
         MSGSTOP("C.P.F. inválido ! ", "Atenção")
         RETURN .f.   
      OTHER
    	IF( !CIC(aNewCpf) )
           MSGSTOP("C.N.P.F. inválido ! ", "Atenção")
           RETURN .f.
 	ENDIF	
Ln 206 ENDCASE    o erro dá aqui 
  
RETURN Nil



*--------------------------------------------------------------*
* FUNCÇÃO QUE CONFERE OS 2 ULTIMOS ALGARISMOS DO NUMERO -------*
*--------------------------------------------------------------*
PROCEDURE CIC()    
  PARAMETER c_ic
  LOCAL d_1 :=d_2 :=0, x_x :=1, con_ta, digito, res_to

  FOR con_ta := 1 TO HMG_LEN(c_ic) - 2
     IF HB_UAT(subs(c_ic,con_ta,1),"/-.") == 0
        d_1 := d_1+(11-x_x) * VAL(SBSTR(c_ic,con_ta,1))
        d_2 := d_2+(12-x_x) * VAL(SBSTR(c_ic,con_ta,1))
        x_x := x_x + 1
     ENDIF
  NEXT con_ta

  res_to  := d_1 - (INT(d_1/11)*11)
  dig_ito := IIF(res_to < 2,0,11-res_to)
  d_2     := d_2 + 2 * dig_ito
  res_to  := d_2 - (INT(d_2/11) * 11)
  dig_ito := VAL(STR(dig_ito,1) + STR(IIF(res_to < 2,0,11-res_to),1))

  IF dig_ito <> VAL(SBSTR(c_ic,HMG_LEN(c_ic)-1,2))  
     MSGStop("CNPJ/CPF não conferiu", "Atenção") 
     RETURN .f. 
  ELSE
     MSGINFO("CNPJ/CPF conferiu", "Informação")
   
  ENDIF

RETURN Nil
Como disse eu ainda estou a iniciar o trabalho com esta ferramenta e gostava de conseguir o domínio dela mas preciso de ajuda pois o Help dela é muito vago e há pouca leitura sobre ela.
Peço encarecidamente a ajuda de vocês, nomeadamente o Sr. toledo e o Sr. Pablo, que tenho consultado as suas resposta e mostram-se umas pessoas com um domínio muito grande.
Eu tenho que entregar este trabalho de gestão de contas particulares a um cliente o mais breve possível e por isso agradeço a V. ajuda.
Fico desde já a aguardar as V. noticias, subscrevendo-me com elevada estima e consideração.

Nota: Se algum de vocês já tiver algum aplicativo desses e me possa faculta-lo para consultar a forma como gere essas contas eu fico muito agradecido.
Peço desculpa se não estou a usar este app da melhor forma mas ainda desconheço o seu funcionamento.

Att, sou
Fernando Almeida email: <fblogica@gmail.com>
Editado pela última vez por Toledo em 24 Set 2016 18:08, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Correção de Erro estranho de sintaxe

Mensagem por alxsts »

Olá!

Seja bem-vindo ao Fórum Fernando! (És Português?)

Para facilitar a análise do teu código fonte, por gentileza, posta-o novamente utilizando a "tag code" presente na barra de ferramentas da página que se abre para postar mensagens. Basta clicar no botão mostrado abaixo e colar o código entre as tags.
Anexos
Botão Code
Botão Code
tagCode.PNG (6.44 KiB) Exibido 850 vezes
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Correção de Erro estranho de sintaxe

Mensagem por Toledo »

Amigo, na linha (206 no seu código e 25 na parte do código que está na sua mensagem acima) em que você disse onde ocorreu o erro, não bate com a mensagem de erro.

Olhando rapidamente pelo seu código postado, na linha 15, onde está CASE aNewCp=='', tem um erro de digitação, o correto seria:

Código: Selecionar todos

CASE aNewCpf==''
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Fernando Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 24 Set 2016 12:53
Localização: Dourados - MS

Correção de Erro estranho de sintaxe

Mensagem por Fernando Almeida »

Bom dia Sr. Toledo e colegas do fórum.

Sim sou Português a residir no brasil e como estou aqui no brasil a pouco tempo, não tenho ainda nenhuns contactos para ir tirando algumas duvidas que me vão surgindo com o uso desta nova ferramenta de desenvolvimento.
Sr. Toledo em relação a linha CASE aNewCp==' ', ela está certa são duas pelicas que se encontram lá. Eu é que copiei pra aqui diretamente e ficou com esse aspecto.
Eu vou tentar ser mais explicito com o problema.
Tenho a aplicação com a criação de clientes, fornecedores e bancos e no campo CNPJ/CPF na propriedade ONLOSTFOCUS eu faço a chamada a esta função que postei aqui para verificar se o CPF/CNPJ estão correctos.
mas quando faço a lincagem dele dá esse erro que mencionei.
Mas o que me criou mais curiosidade foi o facto de começar a dar esse erro logo na 2ª linha da função. Para colmatar isso eu ia reescrevendo as linhas e ele ia avançando mas a determinado momento não passou mais dai dessa tal linha 206.
EU fiz novamente hoje a lincagem e deu o erro na linha ENDCASE e não na linha CASE aNewCp==''.
Agradeço imenso a vossa ajuda pois já programo a muitos anos e nunca encontrei um erro tão bizarro como este.
Ficando desde já a aguradar as V. noticias.
Um grande abraço para todos.
Editado pela última vez por Toledo em 26 Set 2016 12:08, em um total de 1 vez.
Razão: Mensagem editada para retirar o código que esteva formatado errado com a TAG [ code ]... código que foi postado na mensagem seguinte (abaixo).
Fernando Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 24 Set 2016 12:53
Localização: Dourados - MS

Correção de Erro estranho de sintaxe

Mensagem por Fernando Almeida »

me desculpem, mas coloquei o código no lugar errado, é falta de experiencia.
vou fazer de novo, ignorem aquela mensagem postada a pouco.

Código: Selecionar todos

*--------------------------------------------------------------*
//PROCEDURE VERIFCPF()//
//   LOCAL aCpfCnpj :=ALLTRIM( Cadastros.TextCpf_Cnpj.Value)
//   LOCAL aNewCpf :='', Z   
//
//    FOR z :=1 TO HMG_LEN( aCpfCnpj ) 
//       aNewCpf +=Iff(HMG_IsDigit( SUSTR(aCpfCnpj,z,1)), SUBSTR( aCpfCnpj,z,1 ), '')
//    NEXT z   
//   
//    IF Cadastros.TextPessoaj.Value==1
//       Cadastros.TextCpf_Cnpj.Value := ALLTRIM( TRANSF( aNewCpf, "@R 99.999.999/9999-99") )
//    ELSE  
//       Cadastros.TextCpf_Cnpj.Value := ALLTRIM( TRANSF( aNewCpf, "@R 999.999.999-99") )   
//    ENDIF
//    DO CASE
//      CASE aNewCp==''
//        RETURN .t.
//      CASE HMG_LEN(aNewCpf)>0 .AND. HMG_LEN(aNewCpf)<12
//         MSGSTOP("C.P.F. inválido ! ", "Atenção")
//         RETURN .f.   
//      OTHER
//    	IF( !CIC(aNewCpf) )
//           MSGSTOP("C.N.P.F. inválido ! ", "Atenção")
//           RETURN .f.
// 		ENDIF	
//    ENDCASE
//  
//RETURN Nil



*--------------------------------------------------------------*
* FUNCÇÃO QUE CONFERE OS 2 ULTIMOS ALGARISMOS DO NUMERO -------*
*--------------------------------------------------------------*
//PROCEDURE CIC()    
//  PARAMETER c_ic
//  LOCAL d_1 :=d_2 :=0, x_x :=1, con_ta, digito, res_to
//
//  FOR con_ta := 1 TO HMG_LEN(c_ic) - 2
//     IF HB_UAT(subs(c_ic,con_ta,1),"/-.") == 0
//        d_1 := d_1+(11-x_x) * VAL(SBSTR(c_ic,con_ta,1))
//        d_2 := d_2+(12-x_x) * VAL(SBSTR(c_ic,con_ta,1))
//        x_x := x_x + 1
//     ENDIF
//  NEXT con_ta
//
//  res_to  := d_1 - (INT(d_1/11)*11)
//  dig_ito := IIF(res_to < 2,0,11-res_to)
//  d_2     := d_2 + 2 * dig_ito
//  res_to  := d_2 - (INT(d_2/11) * 11)
//  dig_ito := VAL(STR(dig_ito,1) + STR(IIF(res_to < 2,0,11-res_to),1))
//
//  IF dig_ito <> VAL(SBSTR(c_ic,HMG_LEN(c_ic)-1,2))  //
//     MSGStop("CNPJ/CPF não conferiu", "Atenção") 
//     RETURN .f. 
//  ELSE
//     MSGINFO("CNPJ/CPF conferiu", "Informação")
//   
//  ENDIF
//
// RETURN Nil
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Correção de Erro estranho de sintaxe

Mensagem por fladimir »

Teoricamente teria q estar correto...

vc testou com ASPAS DUPLAS como sugeriu o Toledo pra ver se da alguma mensagem diferente ou se passa?

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Fernando Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 24 Set 2016 12:53
Localização: Dourados - MS

Correção de Erro estranho de sintaxe

Mensagem por Fernando Almeida »

Fladimir já consegui corrigir o erro.
As rotinas apresentadas da forma mais certa são seguinte maneira:

Código: Selecionar todos

FUNCTION  VERIF_CPF_CNPJ()
LOCAL aCpfCnpj :=ALLTRIM( Cadastros.TextCpf_Cnpj.Value)
LOCAL aNewCpf :="", z   

   IF aNewCp==""
      RETURN .t.
   ELSE	  
       FOR z :=1 TO HMG_LEN( aCpfCnpj )
          aNewCpf +=IIf(HMG_IsDigit( SUBSTR(aCpfCnpj,z,1)), SUBSTR( aCpfCnpj,z,1 ), '')
       NEXT z   
   
       IF Cadastros.TextPessoaj.Value==1
	      Cadastros.TextCpf_Cnpj.Value := ALLTRIM( TRANSF( aNewCpf, "@R 99.999.999/9999-99") )
		  IF HMG_LEN(aNewCpf)>0 .AND. HMG_LEN(aNewCpf)<12
		     MSGSTOP("C.P.F. inválido ! ", "Atenção")
             RETURN .f.   
		  ENDIF
       ELSE 
          Cadastros.TextCpf_Cnpj.Value := ALLTRIM( TRANSF( aNewCpf, "@R 999.999.999-99") ) 
          IF( !CIC(aNewCpf) )
		     MSGSTOP("C.N.P.F. inválido ! ", "Atenção")
		     RETURN .f.
		  ENDIF 	 
       ENDIF
    ENDIF   
         
RETURN Nil
 
*--------------------------------------------------------------*
* FUNCÇÃO QUE CONFERE OS 2 ULTIMOS ALGARISMOS DO NUMERO -------*
*--------------------------------------------------------------*
PROCEDURE CIC()   
  PARAMETER c_ic
  LOCAL d_1 :=d_2 :=0, x_x :=1, con_ta, digito, res_to

  FOR con_ta := 1 TO HMG_LEN(c_ic) - 2
     IF HB_UAT(SUBSTR(c_ic,con_ta,1),"/-.") == 0
        d_1 := d_1+(11-x_x) * VAL(SUBSTR(c_ic,con_ta,1))
        d_2 := d_2+(12-x_x) * VAL(SUBSTR(c_ic,con_ta,1))
        x_x := x_x + 1
     ENDIF
  NEXT con_ta

  res_to  := d_1 - (INT(d_1/11)*11)
  dig_ito := IF(res_to < 2,0,11-res_to)
  d_2     := d_2 + 2 * dig_ito
  res_to  := d_2 - (INT(d_2/11) * 11)
  dig_ito := VAL(STR(dig_ito,1) + STR(IF(res_to < 2,0,11-res_to),1))

  IF dig_ito <> VAL(SUBSTR(c_ic,HMG_LEN(c_ic)-1,2))  //
     MSGStop("CNPJ/CPF não conferiu", "Atenção")
     RETURN .f.
  ELSE
     MSGINFO("CNPJ/CPF conferiu", "Informação")
   
  ENDIF

RETURN Nil
Reduzi o numero de linhas, assim está mais correto e faz o mesmo.
Agradeço-lhe a sua disposição, depois diga alguma coisa.
Abraço
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Correção de Erro estranho de sintaxe

Mensagem por fladimir »

Q bom q deu certo...

O fórum esta a disposição para compartilharmos conhecimento.

Conforme tiver dúvidas vá postando q na medida do possível e conforme conhecimento dos colegas vamos se ajudando.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder