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: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, 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/
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/
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: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, 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/
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/
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)
