Ler uma constante define em uma lib
Moderador: Moderadores
Ler uma constante define em uma lib
Pessoal,
Existe alguma forma de ler a constante "teste" abaixo passada para a compilação com a diretiva -dteste em uma lib linkada com programa teste ?
ex. hbmk2 teste.hbp -dteste (no hbp tem a referência para a lib teste)
Na lib teste existe algum recurso do harbour para poder ler o define teste ? tem como ?
Existe alguma forma de ler a constante "teste" abaixo passada para a compilação com a diretiva -dteste em uma lib linkada com programa teste ?
ex. hbmk2 teste.hbp -dteste (no hbp tem a referência para a lib teste)
Na lib teste existe algum recurso do harbour para poder ler o define teste ? tem como ?
►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)
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)
Ler uma constante define em uma lib
Não é automático?
Tipo eu tenho uma lib q nela tem se a Diretiva Tal esta ativa age de tal forma
Ai compilo o projeto principal com -DDIRETIVA e linko a lib e funciona...
Ou seria outra dúvida?
Tipo eu tenho uma lib q nela tem se a Diretiva Tal esta ativa age de tal forma
Ai compilo o projeto principal com -DDIRETIVA e linko a lib e funciona...
Ou seria outra dúvida?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
Ler uma constante define em uma lib
Fladimir
Nos meus testes a diretiva na compilação do executável não é passada para a lib, a lib não "enxerga" essa diretiva.
Ex.:
Criação da lib teste
Criação do executável usando a lib teste usando a função LERDIRETIVA da lib
compilação hbmk2 prog.hbp -dTESTE
O que eu quero saber se existe alguma forma da lib "ver" essa diretiva
Nos meus testes a diretiva na compilação do executável não é passada para a lib, a lib não "enxerga" essa diretiva.
Ex.:
Criação da lib teste
Código: Selecionar todos
FUNCTION LERDIRETIVA
cValor :=""
#ifdef TESTE
cValor := "DIRETIVA TESTE"
#endif
RETURN cValor
Código: Selecionar todos
FUNCTION MAIN()
ALERT( LERDIRETIVA() ) // RETORNA "" PORQUE A LIB não vê a diretiva TESTE usada na compilação do executável.
RETURN Nil
O que eu quero saber se existe alguma forma da lib "ver" essa diretiva
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20420
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Ler uma constante define em uma lib
Xi.... acho que viajou na maionese.... rs
#define é em tempo de compilação, para o pré-compilador.
Se a LIB está gerada, essa fase já foi.
O que pode fazer é na LIB criar alguma forma de configurar o que quer, em run-time.
#define é em tempo de compilação, para o pré-compilador.
Se a LIB está gerada, essa fase já foi.
O que pode fazer é na LIB criar alguma forma de configurar o que quer, em run-time.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Ler uma constante define em uma lib
Quintas
O interessante é que você usa A + B para gerar C, onde A seu programa e B a lib geram o executável, neste detalhe a lib não tem a mão de 2 vias
É isso que queria saber se tem como pegar o valor do define, usando Eval() ou alguma função especialO que pode fazer é na LIB criar alguma forma de configurar o que quer, em run-time.
O interessante é que você usa A + B para gerar C, onde A seu programa e B a lib geram o executável, neste detalhe a lib não tem a mão de 2 vias
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20420
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Ler uma constante define em uma lib
Lógico que tem, é só criar, por exemplo igual uso em multithread..
Na hora de usar:
Então bastaria ter essa funcão na LIB, e a LIB usar o retorno dessa função.
O aplicativo poderia alterar o conteúdo.
Se vai usar array, classe, etc. pra ter mais parâmetros, aí fica a seu critério.
Código: Selecionar todos
FUNCTION SetLibSetup( xValue )
STATIC nSetup := 0
IF xValue != NIL
nSetup := xValue
ENDIF
RETURN nSetup
Código: Selecionar todos
SetLibSetup( 10 )
? SetLibSetup()
O aplicativo poderia alterar o conteúdo.
Se vai usar array, classe, etc. pra ter mais parâmetros, aí fica a seu critério.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Ler uma constante define em uma lib
Quintas
Gostei da sua solução,
Mas ainda preciso usar o defined porque temos 2 situações de compilação -dPROD e -dHOMOLOG, não temos uma lib para cada ambiente
PROD = PRODUÇÃO
HOMOLOG = HOMOLOGAÇÃO
Gostei da sua solução,
Mas ainda preciso usar o defined porque temos 2 situações de compilação -dPROD e -dHOMOLOG, não temos uma lib para cada ambiente
PROD = PRODUÇÃO
HOMOLOG = HOMOLOGAÇÃO
Código: Selecionar todos
FUNCTION MAIN
PRIVATE tDiretiva := ""
#if defined( PROD )
tDiretiva := "PROD"
#elif defined( HOMOLOG )
tDiretiva := "HOMOLOG"
#endif
Alert( LERDIRETIVA() )
RETURN Nil
Na lib:
FUNCTION LERDIRETIVA
cValor :=""
IF Type("tDiretiva") != "U" .AND. tDiretiva == "HOMOLOG"
cValor := "DIRETIVA " + tDiretiva
ENDIF
RETURN cValor
►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)
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)
