Clipper On Line • Ver Tópico - Erro ao compilar com o Xailer

Erro ao compilar com o Xailer

Discussão sobre a Xailer

Moderador: Moderadores

 

Erro ao compilar com o Xailer

Mensagempor gilsonpaulo » 10 Jul 2008 11:45

Estou tento este seguinte problema com o Xailer, alguem poderia me dar uma luz?

A Compilar: RVLMSG.PRG...
A Compilar: RVLMENU.PRG...
RVLMENU.PRG(29) Warning W0001 Ambiguous reference: 'PSTOP'
RVLMENU.PRG(29) Warning W0001 Ambiguous reference: 'PTOTREG'
A Compilar: RVLSTART.PRG...
A Criar livraria: rvl.lib...
2 Warnings, 0 Errors

O erro esta acontecendo no rvlmenu.prg

#include "acesso.ch"

/*
* EscCampo() - Mostra por ACHOICE o conteudo de pArray[ 2 ] ( Descricao ),
*        para escolha, devolvendo o conteudo de pArray[ 1 ] ( codigo )
*            selecionada.
*
*    pVarCod     -  Variavel passada como endere‡o
*    pArray[1]   -  Nome da array com os codigos
*                - O QUE OBTEMOS POR REFERENCIA
*    pArray[2]   -  Nome da array com as descricoes
*                - O QUE VEMOS
*/

FUNCTION EscCampo( pVarCod, pArray, pTop, pLeft, pBottom, pRight )

LOCAL tTotReg:=   LEN( pArray[1] )
LOCAL tEscolha
LOCAL wTela:=     SAVESCREEN( pTop, pLeft, pBottom, pRight )
LOCAL tCor:=      SETCOLOR( CorJan() )
LOCAL tBottom:=   IF( tTotReg > ( pBottom - pStop -1 ), pBottom, pTop + pTotReg +1 )

IF EMPTY( pVarCod )
   @ pTop, pLeft, pBottom, pRight BOX BoxFrame()
   RvlShadow( pTop, pLeft, pBottom, pRight )
   tEscolha:=  ACHOICE( pTop, pLeft+1, pBottom-1, pRight-1, pArray[2] )

   RESTSCREEN( pTop, pLeft, pBottom, pRight, wTela )

   IF ( tEscolha != 0 )
     pVarCod:=   pArray [ 1 ] [ tEscolha ]
   ENDIF

  ELSE

   tEscolha:=     ASCAN( pArray[1], pVarCod )
ENDIF

SETCOLOR( tCor )

RETURN( tEscolha != 0 )

/*
* PullDown( pTop, pLeft, paMenu, pPrg, pDigitos )
*
*
*     pTop, pLeft    :   Linha superior e coluna da esquerda
*    paMenu       :  Array contendo as opcoes a serem mostradas
*    pPrg         :  Nome do programa de menu que chama esta funcao
*    pDigitos     :  Numero de digitos acrescentados a pPrg para a
*                    formacao do nome do programa a ser chamado
*/

FUNCTION PullDown( pTop, pLeft, paMenu, pPrg, pDigitos )

LOCAL wTela, tPrg, tX
LOCAL wOpcao:= 0
LOCAL wNumOpcoes:= LEN( paMenu )
LOCAL aMenuAutorizado:= {}

   FOR tX:= 1 TO wNumOpcoes

     IF Autorizado( paMenu[tX][2], MSG_NAO )
       AADD( aMenuAutorizado, { paMenu[tX][1], tX } )
     ENDIF
   NEXT tX

   wNumOpcoes:= LEN( aMenuAutorizado )

   IF ( wNumOpcoes = 0 )
      Autorizado( paMenu[1][2], MSG_SIM )
    ELSE
      @ pTop, pLeft, pTop + wNumOpcoes +1,;
              pLeft + LEN( aMenuAutorizado[1][1] ) +1;
              BOX BoxFrame()

      RvlShadow( pTop, pLeft, pTop + wNumOpcoes +1,;
                 pLeft + LEN( aMenuAutorizado[1][1] ) +1 )
   ENDIF

   WHILE ( wNumOpcoes > 0 )

         SETCOLOR( CorMenu() )

         FOR tX:= 1 TO wNumOpcoes
             @ pTop + tX, pLeft + 1 PROMPT aMenuAutorizado[tX][1]
         NEXT tX

         MENU TO wOpcao

         wTela:= SAVESCREEN( 0, 0, MAXROW(), MAXCOL() )

         IF ( LASTKEY() = ESCAPE ) .OR. ( wOpcao = 0 )
            EXIT
          ELSE  // IF (wOpcao>=1 .and. wOpcao<= NumOpcoes ) ( faixa abrangida )
            tPrg:= pPrg + STRZERO( aMenuAutorizado[wOpcao][2], pDigitos )
            &Tprg.()
         ENDIF

         CLEAR TYPEAHEAD
         RESTSCREEN( 0, 0, MAXROW(), MAXCOL(), wTela )
   ENDDO

RETURN( NIL )

/*
* CHOOSE()    -  Busca codeblock em arquivo e coloca conteudo em um array
*                Mostra o conteudo do array por achoice()
*
*    pBlkCond    :  Bloco com a condicao para teste no Arquivo Selecionado
*    pBlkLinha   :  Bloco com o conteudo que deve ter cada linha de Opcao
*    pTop,
*    pLeft,
*    pBottom,
*    pRight      :  Coordenadas de posicao em tela
*    pInclui     :  Logico ( deve(.T.) ou nao(.F.) aceitar inclusoes )
*    pBlkRet     :  Bloco com o conteudo a ser retornado. Se = NIL, RECNO()
*
*/

FUNCTION Choose( pBlkCond, pBlkLinha, pTop,    pLeft,  ;
                 pBottom,  pRight,    pInclui, pBlkRet ;
               )

LOCAL wTotReg:=   0, tEscolha:= 0, tBottom
LOCAL tInclui:=   IIF( pInclui = NIL, .T., pInclui )
LOCAL aSalva:=     { {}, {} }
LOCAL wTela:=     SAVESCREEN( pTop, pLeft, pBottom, pRight )
LOCAL tCor:=      SETCOLOR( CorJan() )
LOCAL tBlkRet:=   IIF( pBlkRet = NIL, { || RECNO() }, pBlkRet )

   IF ( !EOF() )

     WHILE ( !EOF() .AND. EVAL( pBlkCond ) )

       wTotReg++
       AADD( aSalva[1],  EVAL( pBlkLinha ) )
       AADD( aSalva[2],  EVAL( tBlkRet )    )

       SKIP
     ENDDO

     IF tInclui

       wTotReg++
       AADD( aSalva[1],  PADC( "*** INCLUI OUTRO REGISTRO ***",;
                         pRight-pLeft, "" ))
       AADD( aSalva[2],  0 )

       SKIP
     ENDIF

     tBottom:=   IIF( wTotReg > ( pBottom - pTop -1 ), pBottom,;
                  pTop +wTotReg + 1 )

     @ pTop, pLeft, tBottom, pRight BOX BoxFrame()
    RvLShadow( pTop, pLeft, tBottom, pRight )

     tEscolha:= ACHOICE(  pTop +1, pLeft +1, tBottom -1,;
                     pRight -1, aSalva[1], .T., )

     RESTSCREEN( pTop, pLeft, pBottom, pRight, wTela )

     IF (( tEscolha = wTotReg ) .AND. ( tInclui )) .OR. ( tEscolha = 0 )
       GO BOTTOM                    // Se inclui ou ESC, vai para eof
       SKIP                       // se pBlkRet (codblock) nÆo ‚ pas-
      ELSEIF ( pBlkRet = NIL )        // sado como parƒmetro, posiciona no
     GO aSalva[2][tEscolha]       // recno() escolhido, devolvendo nu-
      ELSE                       // mero escolhido se passar, devolve
     tEscolha:= aSalva[2][tEscolha]   // o conteudo do mesmo
     ENDIF
   ENDIF

   SETCOLOR( tCor )

   RETURN( tEscolha )

/*
* GetNewOrder()  -  Procura o ultimo item do campo-de-ordem ( sequˆncia )
*           e devolve o valor do ultimo incrementado de 1, a partir
*                do registro corrente. Depois vai para o fim do Arquivo.
*
* pBlkCond -  Bloco com a condicao para teste no arquivo selecionado
*
* pBlkRet   -  Bloco com o campo de ordem
*
*/

FUNCTION GetNewOrder( pBlkCond, pBlkRet )

LOCAL    tOrdem:= EVAL( pBlkRet )

   WHILE ( EVAL( pBlkCond ) .AND. !EOF()) .AND. ;
       ( VAL( EVAL( pBlkRet )) <= VAL( tOrdem ) + 1 )

     tOrdem:= EVAL( pBlkRet )
     SKIP
   ENDDO

   GO LASTREC() + 1    // VAI PARA O FIM DO ARQUIVO - INCLUSÇO

   RETURN( STRZERO( VAL( tOrdem ) +1, LEN( tOrdem )))

// eof - RVLMenu.prg

* PRG...................: Spacing
* CLASSE................: Espacejamento
* PREFIXO...............: Spa
* EXPORTA...............: Spa_Spacing()
* CONSTRUTORA...........:
* DESTRUTORA............:
* USA...................:
*
* COMENTARIOS...........: Compilar com /a /m /n /w
* NUMERICO[] spa_spacing(texts, l, r)
* CARACTERE  texts[] - Textos a espacejar
* NUMERICO   l, r    - entre estas duas colunas
* RETURN:    Vetor de colunas iniciais
*            Determina coluna inicial para cada texto, espacado uniformemente
*            entre l e r
*

FUNCTION RvlSpacing( aTextos, nLeft, nRight )

LOCAL    nSumLens,  nTextNum, nSpacesBetween, ;
         aCols:=    ARRAY( LEN( aTextos ))

*  Determina o tamanho total das mensagens
nSumLens:= 0
FOR nTextNum:= 1 TO LEN( aTextos )
    nSumLens +=  LEN( aTextos[nTextNum] )
NEXT

*  Quantidade de espacos entre itens
nSpacesBetween:= INT((( nRight - nLeft +1 ) - nSumLens ) / ;
                      ( LEN( aTextos ) +1 ))

*  Primeira posicao nao e conhecida
aCols[1]:=  1 + nSpacesBetween

*  Determina outros a partir desta
FOR nTextNum:= 2 TO LEN( aTextos )
    aCols[nTextNum]:=  aCols[nTextNum -1] + ;
                       LEN( aTextos[nTextNum -1] ) + ;
                       nSpacesBetween
NEXT

RETURN aCols
* : : : : :

FUNCTION RvlPrompt( cTexto )

@ 01,00 SAY REPLICATE( CHR(32), 80 )
@ 01,05 SAY cTexto

RETURN NIL


Compilando com clipper nao ocorre este erro.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Erro ao compilar com o Xailer

Mensagempor sygecom » 11 Jul 2008 12:21

Você esta compilando ou gerando uma LIB pelo xailer ?

Pelo que vc postou não teve erros, apenas dois avisos....e a linha 29 do codigo que vc postou esta em branco.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Erro ao compilar com o Xailer

Mensagempor gilsonpaulo » 11 Jul 2008 17:24

Estou tentando gerando uma lib.

Gostaria de saber o porque desse erro, pois no clipper não ocorre.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Erro ao compilar com o Xailer

Mensagempor sygecom » 11 Jul 2008 17:56

Não são erros e sim Warnings (Avisos apenas)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Erro ao compilar com o Xailer

Mensagempor gilsonpaulo » 11 Jul 2008 20:37

Gostaria de saber o que são estes avisos, e deque forma eles poderiam gerar algum tipo de problema.

Segue o prg com o a linha original do erro, este que postei acima foi alterado.

/******************************************************************************
*        LHASA -  RUNTIME LIBRARY PARA DESENVOLVIMENTO DE APLICA€åES        *
* DESENVOLVIMENTO: LHASA Consultoria & Sistemas    LINGUAGEM: Clipper 5.01   *
* DATA DE CRIA€ÇO: 05.10.91                   éLTIMA ALTERA€ÇO:        *
* MODULO:  RVLMenu.prg     -       FUN€ÇO: ROTINA GENRICA PARA MENU E OUTROS *
* DESENVOLV.: Ricardo von Linsingen       TIPOS DE ROTINA COM ESCOLHA EM TELA*
******************************************************************************/

#include "acesso.ch"

/*
* EscCampo() - Mostra por ACHOICE o conteudo de pArray[ 2 ] ( Descricao ),
*        para escolha, devolvendo o conteudo de pArray[ 1 ] ( codigo )
*            selecionada.
*
*    pVarCod     -  Variavel passada como endere‡o
*    pArray[1]   -  Nome da array com os codigos
*                - O QUE OBTEMOS POR REFERENCIA
*    pArray[2]   -  Nome da array com as descricoes
*                - O QUE VEMOS
*/

FUNCTION EscCampo( pVarCod, pArray, pTop, pLeft, pBottom, pRight )

LOCAL tTotReg:=   LEN( pArray[1] )
LOCAL tEscolha
LOCAL wTela:=     SAVESCREEN( pTop, pLeft, pBottom, pRight )
LOCAL tCor:=      SETCOLOR( CorJan() )
LOCAL tBottom:=   IIF( tTotReg > ( pBottom - pStop -1 ) , ;
                       pBottom,                           ; 
                       pTop + pTotReg +1 )  //Aqui ocorre a warning

IF EMPTY( pVarCod )
   @ pTop, pLeft, pBottom, pRight BOX BoxFrame()
   RvlShadow( pTop, pLeft, pBottom, pRight )
   tEscolha:=  ACHOICE( pTop, pLeft+1, pBottom-1, pRight-1, pArray[2] )

   RESTSCREEN( pTop, pLeft, pBottom, pRight, wTela )

   IF ( tEscolha != 0 )
     pVarCod:=   pArray [ 1 ] [ tEscolha ]
   ENDIF

  ELSE

   tEscolha:=     ASCAN( pArray[1], pVarCod )
ENDIF

SETCOLOR( tCor )

RETURN( tEscolha != 0 )

/*
* PullDown( pTop, pLeft, paMenu, pPrg, pDigitos )
*
*
*     pTop, pLeft    :   Linha superior e coluna da esquerda
*    paMenu       :  Array contendo as opcoes a serem mostradas
*    pPrg         :  Nome do programa de menu que chama esta funcao
*    pDigitos     :  Numero de digitos acrescentados a pPrg para a
*                    formacao do nome do programa a ser chamado
*/

FUNCTION PullDown( pTop, pLeft, paMenu, pPrg, pDigitos )

LOCAL wTela, tPrg, tX
LOCAL wOpcao:= 0
LOCAL wNumOpcoes:= LEN( paMenu )
LOCAL aMenuAutorizado:= {}

   FOR tX:= 1 TO wNumOpcoes

     IF Autorizado( paMenu[tX][2], MSG_NAO )
       AADD( aMenuAutorizado, { paMenu[tX][1], tX } )
     ENDIF
   NEXT tX

   wNumOpcoes:= LEN( aMenuAutorizado )

   IF ( wNumOpcoes = 0 )
      Autorizado( paMenu[1][2], MSG_SIM )
    ELSE
      @ pTop, pLeft, pTop + wNumOpcoes +1,;
              pLeft + LEN( aMenuAutorizado[1][1] ) +1;
              BOX BoxFrame()

      RvlShadow( pTop, pLeft, pTop + wNumOpcoes +1,;
                 pLeft + LEN( aMenuAutorizado[1][1] ) +1 )
   ENDIF

   WHILE ( wNumOpcoes > 0 )

         SETCOLOR( CorMenu() )

         FOR tX:= 1 TO wNumOpcoes
             @ pTop + tX, pLeft + 1 PROMPT aMenuAutorizado[tX][1]
         NEXT tX

         MENU TO wOpcao

         wTela:= SAVESCREEN( 0, 0, MAXROW(), MAXCOL() )

         IF ( LASTKEY() = ESCAPE ) .OR. ( wOpcao = 0 )
            EXIT
          ELSE  // IF (wOpcao>=1 .and. wOpcao<= NumOpcoes ) ( faixa abrangida )
            tPrg:= pPrg + STRZERO( aMenuAutorizado[wOpcao][2], pDigitos )
            &Tprg.()
         ENDIF

         CLEAR TYPEAHEAD
         RESTSCREEN( 0, 0, MAXROW(), MAXCOL(), wTela )
   ENDDO

RETURN( NIL )

/*
* CHOOSE()    -  Busca codeblock em arquivo e coloca conteudo em um array
*                Mostra o conteudo do array por achoice()
*
*    pBlkCond    :  Bloco com a condicao para teste no Arquivo Selecionado
*    pBlkLinha   :  Bloco com o conteudo que deve ter cada linha de Opcao
*    pTop,
*    pLeft,
*    pBottom,
*    pRight      :  Coordenadas de posicao em tela
*    pInclui     :  Logico ( deve(.T.) ou nao(.F.) aceitar inclusoes )
*    pBlkRet     :  Bloco com o conteudo a ser retornado. Se = NIL, RECNO()
*
*/

FUNCTION Choose( pBlkCond, pBlkLinha, pTop,    pLeft,  ;
                 pBottom,  pRight,    pInclui, pBlkRet ;
               )

LOCAL wTotReg:=   0, tEscolha:= 0, tBottom
LOCAL tInclui:=   IIF( pInclui = NIL, .T., pInclui )
LOCAL aSalva:=     { {}, {} }
LOCAL wTela:=     SAVESCREEN( pTop, pLeft, pBottom, pRight )
LOCAL tCor:=      SETCOLOR( CorJan() )
LOCAL tBlkRet:=   IIF( pBlkRet = NIL, { || RECNO() }, pBlkRet )

   IF ( !EOF() )

     WHILE ( !EOF() .AND. EVAL( pBlkCond ) )

       wTotReg++
       AADD( aSalva[1],  EVAL( pBlkLinha ) )
       AADD( aSalva[2],  EVAL( tBlkRet )    )

       SKIP
     ENDDO

     IF tInclui

       wTotReg++
       AADD( aSalva[1],  PADC( "*** INCLUI OUTRO REGISTRO ***",;
                         pRight-pLeft, "" ))
       AADD( aSalva[2],  0 )

       SKIP
     ENDIF

     tBottom:=   IIF( wTotReg > ( pBottom - pTop -1 ), pBottom,;
                  pTop +wTotReg + 1 )

     @ pTop, pLeft, tBottom, pRight BOX BoxFrame()
    RvLShadow( pTop, pLeft, tBottom, pRight )

     tEscolha:= ACHOICE(  pTop +1, pLeft +1, tBottom -1,;
                     pRight -1, aSalva[1], .T., )

     RESTSCREEN( pTop, pLeft, pBottom, pRight, wTela )

     IF (( tEscolha = wTotReg ) .AND. ( tInclui )) .OR. ( tEscolha = 0 )
       GO BOTTOM                    // Se inclui ou ESC, vai para eof
       SKIP                       // se pBlkRet (codblock) nÆo ‚ pas-
      ELSEIF ( pBlkRet = NIL )        // sado como parƒmetro, posiciona no
     GO aSalva[2][tEscolha]       // recno() escolhido, devolvendo nu-
      ELSE                       // mero escolhido se passar, devolve
     tEscolha:= aSalva[2][tEscolha]   // o conteudo do mesmo
     ENDIF
   ENDIF

   SETCOLOR( tCor )

   RETURN( tEscolha )

/*
* GetNewOrder()  -  Procura o ultimo item do campo-de-ordem ( sequˆncia )
*           e devolve o valor do ultimo incrementado de 1, a partir
*                do registro corrente. Depois vai para o fim do Arquivo.
*
* pBlkCond -  Bloco com a condicao para teste no arquivo selecionado
*
* pBlkRet   -  Bloco com o campo de ordem
*
*/

FUNCTION GetNewOrder( pBlkCond, pBlkRet )

LOCAL    tOrdem:= EVAL( pBlkRet )

   WHILE ( EVAL( pBlkCond ) .AND. !EOF()) .AND. ;
       ( VAL( EVAL( pBlkRet )) <= VAL( tOrdem ) + 1 )

     tOrdem:= EVAL( pBlkRet )
     SKIP
   ENDDO

   GO LASTREC() + 1    // VAI PARA O FIM DO ARQUIVO - INCLUSÇO

   RETURN( STRZERO( VAL( tOrdem ) +1, LEN( tOrdem )))

// eof - RVLMenu.prg

* PRG...................: Spacing
* CLASSE................: Espacejamento
* PREFIXO...............: Spa
* EXPORTA...............: Spa_Spacing()
* CONSTRUTORA...........:
* DESTRUTORA............:
* USA...................:
*
* COMENTARIOS...........: Compilar com /a /m /n /w
* NUMERICO[] spa_spacing(texts, l, r)
* CARACTERE  texts[] - Textos a espacejar
* NUMERICO   l, r    - entre estas duas colunas
* RETURN:    Vetor de colunas iniciais
*            Determina coluna inicial para cada texto, espacado uniformemente
*            entre l e r
*

FUNCTION RvlSpacing( aTextos, nLeft, nRight )

LOCAL    nSumLens,  nTextNum, nSpacesBetween, ;
         aCols:=    ARRAY( LEN( aTextos ))

*  Determina o tamanho total das mensagens
nSumLens:= 0
FOR nTextNum:= 1 TO LEN( aTextos )
    nSumLens +=  LEN( aTextos[nTextNum] )
NEXT

*  Quantidade de espacos entre itens
nSpacesBetween:= INT((( nRight - nLeft +1 ) - nSumLens ) / ;
                      ( LEN( aTextos ) +1 ))

*  Primeira posicao nao e conhecida
aCols[1]:=  1 + nSpacesBetween

*  Determina outros a partir desta
FOR nTextNum:= 2 TO LEN( aTextos )
    aCols[nTextNum]:=  aCols[nTextNum -1] + ;
                       LEN( aTextos[nTextNum -1] ) + ;
                       nSpacesBetween
NEXT

RETURN aCols
* : : : : :

FUNCTION RvlPrompt( cTexto )

@ 01,00 SAY REPLICATE( CHR(32), 80 )
@ 01,05 SAY cTexto

RETURN NIL
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Erro ao compilar com o Xailer

Mensagempor sygecom » 17 Jul 2008 20:10

Gilson,
Gere a LIB usando o hbmake, e veja se acontece a mesma coisa.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Erro ao compilar com o Xailer

Mensagempor gilsonpaulo » 20 Jul 2008 18:33

Obrigado pela ajuda, realmente, mesmo com as warnings a lib foi e gerada e funciona normalmente.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Erro ao compilar com o Xailer

Mensagempor Reginaldo » 23 Jul 2008 23:03

Caro Gilson,

Esses "Warnings" significam que pode haver ambiguidade com essas variáveis, pois, você não as declarou como LOCAL, GLOBAL, PUBLIC, PRIVATE, etc... (No caso de variáveis PUBLIC o xailer também gera "warnings", pois no xailer tem uma classe, onde você instancia e nela coloca as variáveis públicas do sistema, então, se declarar variáveis PUBLIC, também terá "warnings")

Na minha opinião, essa verificação (de ambiguidade) o velho Clipper já deveria fazer, pois evita problemas que podem ocorrer, por exemplo quando se declara uma variável PUBLIC e numa função qualquer do sistema, você dá outra valor a essa mesma variável, sem saber que ela é publica...

Bom, nem o xHarbour faz essa verificação, mas, como o xailer é utilizado com um xHarbour "otimizado para xailer", creio eu, que essa é umas das "otimizações" que eles colocaram....

Essa verificação é bastante interessante, visto que as variáveis do xharbour, assim como no clipper, são tipadas dinamicamente, e quem sabe os programadores do xharbour, não a implementam numa próxima versão do compilador...

Espero ter ajudado,

Atenciosamente,
Reginaldo J. Silva
Analista de Sistemas
Avatar de usuário

Reginaldo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 67
Data de registro: 14 Jul 2004 08:06
Cidade/Estado: Lagoa da Prata - MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Erro ao compilar com o Xailer

Mensagempor mhackervix » 27 Ago 2008 22:24

A utilização de tipagem para indicar se a expressão (literais) é uma variável de MEMória ou um Campo (do DBF) elimina estes avisos de atenção. Ou seja, declare dentro da função se as Literais são campos ou variáveis.

att.
Mhackervix, Msc.
Avatar de usuário

mhackervix
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 105
Data de registro: 11 Fev 2008 01:06
Cidade/Estado: ES
Curtiu: 1 vez
Mens.Curtidas: 2 vezes




Retornar para Xailer

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro