Pregunta

Actualmente estoy trabajando con el código 'heredada' que ha (dispersarse aleatoriamente en) un montón de directivas de compilación condicional en función de la versión de Delphi, que se remonta a Delphi 2. A partir de ahora, todo el desarrollo será con Delphi 2009 o futuro. ¿Existe una herramienta en Delphi 2009, o un plugin, que eliminará automáticamente compilador segmentos de código condicional basada en una versión especificada 'mínimo'?

¿Fue útil?

Solución

Lo recomiendo altamente el Delphi Pascal inspiración preprocesador (DIPP )

Esto puede hacer varias cosas con un archivo de origen además de eliminar define condicionales, incluyendo el "inline" de incluir archivos o eliminar comentarios (todos por supuesto altamente configurable y controlable por las opciones suministradas al procesador).

La funcionalidad define condicionales es especialmente útil ya que puede o bien tienen todos esos condicionales extraído o simplemente proporcionar un conjunto de DEFINIR de que desea aplicar. DIPP entonces emitir un archivo fuente que refleja la forma en que aparecería al compilador con esos símbolos definidos, pero sin las directivas condicionales sí mismos.

Así que en su caso sólo tendría que define los símbolos correspondientes a su versión "de referencia" Delphi.

Otros consejos

Usted debe dar JEDI preprocesador (Pascal preprocesador) en el JCL una intentarlo.

En el tronco en nuestro SVN la fuente se pueden encontrar en el directorio JCL / devtools / jpp y en nuestra última versión (2.1) del archivo ZIP jpp.exe se puede encontrar en las devtools dir.

No sé de una herramienta de este tipo pero debe ser relativamente sencillo para escribirlo.

  1. Bucle a través de todos los archivos en el directorio utilizando FindFirst y FindNext
  2. Uso TStringList.LoadFromFile a leer todos los archivos pas.
  3. Bucle a través de las cuerdas y buscar directivas {$IfDef}. Si la versión especificada en la sección condicional es más antigua que D2009 quitar todo el texto hasta que el {$EndIf}.
  4. Uso TStringList.SaveToFile para escribir el archivo modificado en el disco.

Mi consejo sería código de cambio sólo a gestionar por completo. Sin embargo, si usted también va a modificar el código de 3 ª parte existente, entonces le sugiero que vaya a través de cada IFDEF definido para su validación. Algunos proveedores no utilizan las llamadas estándar IFDEF VERxxx, sino que crean su propia que podría llamarse algo así como VER70UP o algo así. El lugar más común para esto sería en incluir archivos, a fin de buscar una {I ???. $ INC} archivo cerca del comienzo de cada archivo, a continuación, analizar esto para lo que se utiliza y cómo.

La otra razón para analizar cada uno $ DEFINE / $ UNDEF es el hecho de que una versión de uno específico podría convertirse en una nueva definir previamente que su no comprobar ... que en última instancia conduce a código muerto.

El uso GExperts , puede utilizar tanto GrepSearch o GrepRegularExpressions para buscar en el código y luego usar el Reemplazar herramienta en las GrepResults para eliminar todo lo que necesita.

  

Usted puede hacer una búsqueda y reemplazo   operación en todos los partidos de la   lista o sólo el archivo / juego seleccionado.   Cuando se elige una de estas opciones,   aparece un diálogo solicita la   cadena que se utiliza en lugar de la emparejado   texto. Tenga en cuenta que las formas que se encuentran   Actualmente abierto no pueden tener su texto   reemplazado, debido a las limitaciones en la   IDE. Por favor, cierre todas las formas antes   tratando de reemplazar texto en ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top