Página 1 de 1

#Define não é reconhecido no sistema

Enviado: 10 Out 2016 15:47
por rubens
Boa tarde...

De repente parou de reconhecer os #define que coloco no inicio do sistema... Alguém tem idéia de como resolver isso..

Código: Selecionar todos

#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE DATACOMP Right(_HBMK_BUILD_DATE_,2)+'/'+SubStr( _HBMK_BUILD_DATE_, 05,02 )  
#DEFINE Nome "Rubens"

REQUEST HB_MEMIO
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT_DEFAULT
REQUEST DBFCDX
FUNCTION MAIN()
...
Pelo Debug se digito ? Nome ou ? Datacomp não mostra nada...
O que eu posso ter mexido para desabilitar isso?
Obrigado
Rubens

#Define não é reconhecido no sistema

Enviado: 10 Out 2016 17:07
por Kapiaba

#Define não é reconhecido no sistema

Enviado: 10 Out 2016 17:48
por rubens
Kapiada...

Pelo que entendi você tá falando que o problema tá na apresentação....na GT... mas aí tá funcionando beleza...
O Problema é que estou usando o #Define

#DEFINE DATACOMP Right(_HBMK_BUILD_DATE_,2)+'/'+SubStr( _HBMK_BUILD_DATE_, 05,02 )
#DEFINE NOME "Rubens"

Mas quando tento usar por exemplo: ? NOME não mostra nada... como se não tivesse definido...

Rubens

#Define não é reconhecido no sistema

Enviado: 10 Out 2016 19:01
por alxsts
Olá!

Creio que você esteja interpretando de forma errônea o conceito de pré processamento.

Tudo que se define com #define, #command, #translate, #xcommand, #xtranslate se transforma em uma constante manifesta. Ao ser invocado, o compilador xBase invoca o pré processador que lê o arquivo fonte e troca as referências às constantes por seus valores. Uma constante manifesta, como diz o nome, não é uma variável. Desta forma, não é possível exibí-la através do debugger, como você está tentando fazer.

Código: Selecionar todos

#DEFINE DATACOMP Right(_HBMK_BUILD_DATE_,2)+'/'+SubStr( _HBMK_BUILD_DATE_, 05,02 )
#DEFINE NOME "Rubens"

? NOME   /// ---> errado

Código: Selecionar todos

#DEFINE DATACOMP Right(_HBMK_BUILD_DATE_,2)+'/'+SubStr( _HBMK_BUILD_DATE_, 05,02 )
#DEFINE NOME "Rubens"

Function Main()

   Local cNome := NOME
   ? cNome   /// ---> correto
Sempre lembrando que os nomes das constantes manifestas definidas são case sensitive, ou seja, letras maiúsculas e minúsculas influem.

#Define não é reconhecido no sistema

Enviado: 10 Out 2016 20:10
por Jairo Maia
Olá Pessoal,

Isso aqui funcionou corretamente:

Código: Selecionar todos

#DEFINE NOME "Rubens"

Function Main()

   ?
   ? NOME // ---> correto
   ?
   
Return
rubens escreveu:O que eu posso ter mexido para desabilitar isso?
Essa é a questão... Não tenho a menor ideia e nem sabia que isso era possível.

#Define não é reconhecido no sistema

Enviado: 11 Out 2016 06:31
por asimoes
Olá,

Pelo debug você não vai "ver" o valor do define, a não ser que você atribua a uma variável como o Alexandre informou.

#Define não é reconhecido no sistema

Enviado: 12 Out 2016 19:53
por JoséQuintas
Só lembrando que #define é case sensitive, não adianta definir em minúsculo e usar em maiúsculo.
O caminho mais curto é este:

Código: Selecionar todos

#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE DATACOMP Right(_HBMK_BUILD_DATE_,2)+'/'+SubStr( _HBMK_BUILD_DATE_, 05,02 )
#DEFINE Nome "Rubens"
PROCEDURE Main
   ? DATACOMP
   ? Nome
   ? NOME
   RETURN

Código: Selecionar todos

d:\temp>hbmk2 test -p
hbmk2: Processing environment options: -comp=msvc
Harbour 3.4.0dev (a996781) (2016-09-30 21:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test.prg' and generating preprocessed output to 'test.ppo'...
Lines 13, Functions/Procedures 1
Generating C source output to 'c:\temp\hbmk_35fk8z.dir\test.c'... Done.
test.c

d:\temp>type test.ppo

PROCEDURE Main

   QOut( Right(_HBMK_BUILD_DATE_,2)+"/"+SubStr( _HBMK_BUILD_DATE_, 05,02 ) )
   QOut( "Rubens" )
   QOut( NOME )

   RETURN
Ou melhor ainda, se compilar usando -w3 -es2 o compilador já vai reclamar se estiver errado.

Código: Selecionar todos

d:\temp>hbmk2 test -w3 -es2
hbmk2: Processing environment options: -comp=msvc
Harbour 3.4.0dev (a996781) (2016-09-30 21:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test.prg'...
test.prg(7) Warning W0001  Ambiguous reference '_HBMK_BUILD_DATE_'
test.prg(7) Warning W0001  Ambiguous reference '_HBMK_BUILD_DATE_'
test.prg(9) Warning W0001  Ambiguous reference 'NOME'

No code generated.