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.