Pergunta

Atualmente, estou trabalhando com código 'herdada' que tem (espalhadas aleatoriamente ao longo) um monte de diretivas de compilador condicional baseado na versão do Delphi, de volta para Delphi 2 indo. De agora em diante, todo o desenvolvimento será com Delphi 2009 ou futuro. Existe uma ferramenta em Delphi 2009, ou um plugin, que irá remover automaticamente compilador segmentos de código condicionais com base em uma versão especificada 'mínimo'?

Foi útil?

Solução

Eu recomendo o Delphi Inspiração Pascal Preprocessor (DIPP )

Isto pode fazer uma série de coisas com um arquivo de origem, além de remoção define condicionais, incluindo o "inline" de arquivos de inclusão e remoção de comentários (tudo é claro altamente configurável e controlável por opções fornecidas ao processador).

A funcionalidade define condicional é especialmente útil como você pode ter todos esses condicionais simplesmente removidos ou fornecer um conjunto de de que você deseja aplicar DEFINE. DIPP irá então emitir um arquivo de origem que reflete como ele iria aparecer para o compilador com esses símbolos definidos, mas sem as directivas condicionais si mesmos.

Assim, no seu caso, você poderia simplesmente definido os símbolos apropriados à sua "base" versão Delphi.

Outras dicas

Você deve dar JEDI PreProcessor (Pascal PreProcessor) no JCL um tente.

No porta-malas na nossa SVN a fonte pode ser encontrada no diretório JCL / devtools / jpp e na nossa última versão (2.1) zip-file a jpp.exe podem ser encontrados nas devtools dir.

Eu não sei de tal ferramenta um, mas deve ser relativamente simples para escrevê-lo.

  1. Percorre todos os arquivos no diretório usando FindFirst e FindNext
  2. Use TStringList.LoadFromFile para ler todos os arquivos pas.
  3. Curva através das cordas e olhar para as directivas {$IfDef}. Se a versão especificada na seção condicional é mais velho do que D2009 remover todo o texto até o {$EndIf}.
  4. Use TStringList.SaveToFile para gravar o arquivo modificado para o disco.

O meu conselho seria o de código de mudança só você gerenciar completamente. Se, contudo, você também vai modificar 3ª código partido existente, então sugiro que você passar por cada IFDEF definido para validação. Alguns vendedores não usam as chamadas IFDEF VERxxx padrão, mas criar a sua própria, que pode ser chamado de algo como VER70UP ou tal. O local mais comum para isso seria em incluir arquivos, assim que olhar para a {INC $ I ???.} Arquivo perto do início de cada arquivo, em seguida, analisar este para o que está sendo usado e como.

A outra razão para analisar cada $ DEFINE / $ UNDEF é o fato de que uma versão específica pode ligar uma nova definição que a sua anteriormente não verificar ... que em última análise leva em código morto.

Use GExperts , você pode usar tanto GrepSearch ou GrepRegularExpressions para procurar no seu código e, em seguida, usar o Replace ferramenta nas GrepResults para remover tudo o que você precisa.

Você pode fazer uma pesquisa e substituição operação em todas as partidas na lista ou somente o arquivo selecionado / jogo. Quando você escolher uma dessas opções, uma caixa de diálogo aparece solicitando a string a ser usada no lugar do combinado texto. Note-se que as formas que são atualmente aberto não pode ter seu texto substituído, devido a limitações no IDE. Por favor, feche todas as formas antes tentando substituir o texto em si.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top