Página 1 de 1

Problema migranção xharbour => harbour

Enviado: 16 Jun 2012 19:20
por janio
Olá a todos,

De tanto ouvir falar no harbour, resolvi fazer alguns testes para avaliar seu desempenho, apesar de nao estar tendo nenhum tipo de problema com xharbour. Ocorre que estou tendo muitos erros com o comando Begin Sequence, que uso de mais em minhas aplicações e que no xHarbour compila sem nenhum problema. Mas no harbour, nem compila.

Uso Begin Sequece com Do While para retornar ao get anterior com ESC. Ja uso isso ha muito tempo e nao gostaria de mudar. Faço assim:

Código: Selecionar todos

         BEGIN SEQUENCE
         DO WHILE .T.   
         @ li+03,ci+12 GET cCGC Pict "@R 99.999.999/9999-99"
         Read

            If LastKey() = 27
               Exit
            EndIf

         DO WHILE .T.
         @ li+03,ci+32 GET vNOMCLI Pict "@!s40"
         Read

            If LastKey() = 27
               Exit
            EndIf

         DO WHILE .T.
         @ li+06,ci+02 GET vENDCLI Pict "@!s40"
         Read

            If LastKey() = 27
               Exit
            EndIf

        Break
        Enddo ; Enddo ; Enddo
        EndSequece

        If Lastkey() = 27
           Loop
       Endif

So que isso nao compila no Harbour ja que ele reclama do EndSequece.

Janio

Problema migranção xharbour => harbour

Enviado: 16 Jun 2012 19:51
por Imatech
HARBOUR:

Código: Selecionar todos


   END SEQUENCE


Problema migranção xharbour => harbour

Enviado: 16 Jun 2012 20:24
por janio
Ok Chefe,

Diminuiu, mas ainda ta dando coisa estranha. O codigo abaixo, por exemplo, nao ta passando. Lembrando q no xharbour passa que é uma beleza. Ele ta reclamando da linha 298 q é justamente o primeiro Loop q tem apos o EndSequence. Nao sei o q este codigo tem de errado...

Código: Selecionar todos

   For i=1 TO vNUMPAR   

	   vVALPAR   := vVALTIT / vNUMPAR

	   @ lin,16 Say StrZero(i,2)
      
      Do While .t.
      @ lin,23 Get vDATVEN
      Read
      
         If Lastkey() = 27
         	Loop
         Endif

			If vDATVEN < vDATEMI
				MSG("VENCIMENTO MENOR QUE A EMISSAO DO TITULO")
				Loop
		   Endif
            
   	   Begin Sequence
   	   
   	   Do While .t.
   	   @ lin,36 Get vVALPAR Pict "@E 999,999.99"
			Read

   	      If Lastkey() = 27
   	      	Exit
   	      Endif

				If vVALPAR > vVALTIT
					MSG("PARCELA MAIOR QUE O TOTAL DO TITULO")
					Loop
				Endif

   	   Do While .t.
   	   @ lin,49 Get vDATPAG
   	   Read
	
   	      If Lastkey() = 27
   	      	Exit
   	      Endif
	
				If !Empty( vDATPAG )
					If vDATPAG < vDATEMI
						MSG("PAGAMENTO MENOR QUE A EMISSAO DO TITULO")
						Loop
					Endif
				Endif

			Break
			Enddo ; Enddo
			End Sequence
		
			If LastKey() = 27
				Loop
			Endif

   	 	lin := lin + 1
   	  	aAdd( mParcelas, { vDATVEN, vVALPAR, vDATPAG })
   	   
   	  	vDATVEN := mParcelas[i,1] + 30
		   vDATPAG := Ctod("")
   	   nSOMA   := nSOMA + vVALPAR
 	
			Exit
		
		Enddo

   Next

Problema migranção xharbour => harbour

Enviado: 16 Jun 2012 20:40
por Imatech
Tente novamente...

HARBOUR é exigente com o código...
A sintaxe de comandos e funções tem que ser exata... ;)

Enddo ; Enddo: Tambem não pode usar assim...

Código: Selecionar todos


PROC F_TESTE()
  LOCAL i := 0
  LOCAL lin := 10
  LOCAL vVALPAR := 0
  LOCAL vDATEMI := DATE()
  LOCAL vDATPAG := DATE()
  LOCAL vDATVEN := DATE()
  LOCAL vNUMPAR := 1
  LOCAL vVALTIT := 1

  For i := 1 TO vNUMPAR

    vVALPAR := vVALTIT / vNUMPAR

    @ lin,16 Say StrZero(i,2)

    Do While .t.
      @ lin,23 Get vDATVEN
      Read

      If Lastkey() == 27
        Loop
      Endif

      If vDATVEN < vDATEMI
        MSG("VENCIMENTO MENOR QUE A EMISSAO DO TITULO")
        Loop
      Endif

      Begin Sequence

        Do While .t.

          @ lin,36 Get vVALPAR Pict "@E 999,999.99"
          Read

          If Lastkey() == 27
            Exit
          Endif

          If vVALPAR > vVALTIT
            MSG("PARCELA MAIOR QUE O TOTAL DO TITULO")
            Loop
          Endif

          Do While .t.
            @ lin,49 Get vDATPAG
            Read

            If Lastkey() == 27
              Exit
            Endif

            If !Empty( vDATPAG )
              If vDATPAG < vDATEMI
                MSG("PAGAMENTO MENOR QUE A EMISSAO DO TITULO")
                Loop
              Endif
            Endif

            Break
          Enddo
        Enddo
      End Sequence

      If LastKey() == 27
        Loop
      Endif

      lin := lin + 1
      aAdd( mParcelas, { vDATVEN, vVALPAR, vDATPAG })

      vDATVEN := mParcelas[i,1] + 30
      vDATPAG := Ctod("")
      nSOMA := nSOMA + vVALPAR

      Exit

    Enddo

  Next

RETURN


Problema migranção xharbour => harbour

Enviado: 17 Jun 2012 01:13
por janio
Amigo,

Obrigado. Parece que é isso mesmo: O harbour nao aceita Enddo ; Enddo... na mesma linha. O bixo é exigente de mais heheheheh

Continuando aki...

Janio