Diretivas de compilação
Olá,
Gostaria de usar multiplas diretivas de compilação para não repetir o codigo. Pesquisei na Internet, mas não achei como fazer isso.
seria algo como
{$IFDEF diretiva1 OR DEBUG1}
código1
{$ENDIF}
{$IFDEF diretiva3 OR DEBUG2}
código2
{$ENDIF}
Sei que o OR não existe, é que usamos o mesmo .PAS para 2 aplicativos e algumas rotinas só podem ser usadas em um deles.
Outra alternativa para a questão também é bem vinda.
Obrigada
Silvia
por gentileza, avisar sobre a resposta para silvia@infosystem.com.br
Silvia Berezin
Curtidas 0
Respostas
Wesley Yamazack
02/12/2009
Olá amiga, o que você queria seria algo neste estilo
{$IFDEF MINHA_PRIMEIRA_DIRETIVA}
{$IFDEF MINHA_SEGUNDA_DIRETIVA}
{$IFDEF MINHA_TERCEIRA_DIRETIVA}
{$ENDIF}
{$ENDIF}
{$ENDIF}
Se for isso esta ai a solução.
Um abraço
Wesley Y
{$IFDEF MINHA_PRIMEIRA_DIRETIVA}
{$IFDEF MINHA_SEGUNDA_DIRETIVA}
{$IFDEF MINHA_TERCEIRA_DIRETIVA}
{$ENDIF}
{$ENDIF}
{$ENDIF}
Se for isso esta ai a solução.
Um abraço
Wesley Y
GOSTEI 0
Silvia Berezin
02/12/2009
Olá Wesley,
Infelizmente não deu certo, como é em cascata. A claúsula OR seria a melhor alternativa, mas nunca vi isso.
Para você entender o que eu preciso:
uses FuncoesGerais,
{$IFDEF VDA}
Fornecedores_IncAlt,uMenuFiscal;
{$ENDIF} {$IFDEF DEBUGVDA}
Fornecedores_IncAlt,uMenuFiscal;
{$ENDIF} {$IFDEF ADM}
Fornecedores_IncAlt;
{$ENDIF} {$IFDEF DEBUGADM}
Fornecedores_IncAlt;
{$ENDIF} O mesmo .PAS é usado para 2 projetos, porém o projeto ADM não usa a unit uMenuFiscal (não, não posso acrescentar no projeto ADM pois existem mais outras tantas units que teriam que ser acrescentadas também). Quando estou Debugando preciso da clausula DEBUGADM ou DEBUGVDA, pois utilizamos DLLs de proteção que não permitem debugar, então temos que ter uma diretiva para DEBUGAR e outra para a versão final. Obrigada pela atenção Abs Silvia
Fornecedores_IncAlt,uMenuFiscal;
{$ENDIF} {$IFDEF DEBUGVDA}
Fornecedores_IncAlt,uMenuFiscal;
{$ENDIF} {$IFDEF ADM}
Fornecedores_IncAlt;
{$ENDIF} {$IFDEF DEBUGADM}
Fornecedores_IncAlt;
{$ENDIF} O mesmo .PAS é usado para 2 projetos, porém o projeto ADM não usa a unit uMenuFiscal (não, não posso acrescentar no projeto ADM pois existem mais outras tantas units que teriam que ser acrescentadas também). Quando estou Debugando preciso da clausula DEBUGADM ou DEBUGVDA, pois utilizamos DLLs de proteção que não permitem debugar, então temos que ter uma diretiva para DEBUGAR e outra para a versão final. Obrigada pela atenção Abs Silvia
GOSTEI 0
Wesley Yamazack
02/12/2009
Boa noite Silvia,
Desculpe mas nao entendi muito bem. O código que você me enviou já não resolve o problema ? Pelo que entendi, de acordo com o código postado
o Delphi so compilara as units que voce usa, por exemplo, quando definir ADM a unit uMenuFiscal nao sera compilada, conforme desejado.
Att,
Wesley Y
Desculpe mas nao entendi muito bem. O código que você me enviou já não resolve o problema ? Pelo que entendi, de acordo com o código postado
o Delphi so compilara as units que voce usa, por exemplo, quando definir ADM a unit uMenuFiscal nao sera compilada, conforme desejado.
Att,
Wesley Y
GOSTEI 0
Silvia Berezin
02/12/2009
Oi Wesley
O código resolve, porém duplica os códigos. Isso que eu queria saber, se existe alguma maneira de não duplicar.
Pelo que pesquisei até agora, acho que do jeito que está seria a única maneira.
Obrigada
GOSTEI 0
Wesley Yamazack
02/12/2009
Olá
Silvia, Boa tarde.
Não terá como fugir disso não, infelizmente, até o momento, em minha visão não teria outra forma.
Um abraço
Wesley Y
Não terá como fugir disso não, infelizmente, até o momento, em minha visão não teria outra forma.
Um abraço
Wesley Y
GOSTEI 0
Wesley Yamazack
02/12/2009
Olá,
Podemos fechar o chamado ?
Att,
Wesley Y
Podemos fechar o chamado ?
Att,
Wesley Y
GOSTEI 0
Devmedia
02/12/2009
Silvia,
por falta de retorno estamos encerrando o chamado. CASO TENHA DÚVIDAS SOBRE O ASSUNTO AQUI TRATADO, BASTA POSTAR A DUVIDA AQUI MESMO QUE O CONSULTOR VOLTARÁ A LHE ATENDER O SERÁ REABERTO.
por falta de retorno estamos encerrando o chamado. CASO TENHA DÚVIDAS SOBRE O ASSUNTO AQUI TRATADO, BASTA POSTAR A DUVIDA AQUI MESMO QUE O CONSULTOR VOLTARÁ A LHE ATENDER O SERÁ REABERTO.
GOSTEI 0