#Define não é reconhecido no sistema

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

#Define não é reconhecido no sistema

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

#Define não é reconhecido no sistema

Mensagem por Kapiaba »

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

#Define não é reconhecido no sistema

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

#Define não é reconhecido no sistema

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

#Define não é reconhecido no sistema

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

#Define não é reconhecido no sistema

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

#Define não é reconhecido no sistema

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder