Diretivas de compilação

02/12/2009

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

Silvia Berezin

Curtidas 0

Respostas

Wesley Yamazack

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
GOSTEI 0
Silvia Berezin

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    
GOSTEI 0
Wesley Yamazack

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
GOSTEI 0
Silvia Berezin

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

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
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

02/12/2009

Olá,
 Podemos fechar o chamado ?

Att,
Wesley Y
GOSTEI 0
Devmedia

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.
GOSTEI 0
POSTAR