自动删除Delphi IFDEf编译器指令

时间:2010-01-09 11:52:13

标签: delphi delphi-2009 compiler-directives

我目前正在使用'继承'代码,该代码具有(随机散布)一大堆基于Delphi版本的条件编译器指令,返回Delphi 2。从现在开始,所有开发都将采用Delphi 2009或未来。 Delphi 2009中是否有一个工具或插件,它会根据指定的“最小”版本自动删除编译器条件代码段?

5 个答案:

答案 0 :(得分:6)

我强烈推荐Delphi Inspiration Pascal Preprocessor (DIPP)

除了删除条件定义外,还可以使用源文件执行许多操作,包括包含文件的“内联”和删除注释(当然,所有这些都可以通过提供给处理器的选项进行高度配置和控制)。 p>

条件定义功能特别有用,因为您可以简单地删除所有这些条件,或者提供一组您想要应用的DEFINE。然后DIPP将发出一个源文件,该文件反映了编译器看起来如何使用这些符号DEFINED,但没有条件指令本身。

因此,在您的情况下,您只需定义适合您的“基线”Delphi版本的符号。

答案 1 :(得分:4)

你应该试试JCL中的JEDI PreProcessor(Pascal PreProcessor)。

在我们SVN的主干中,可以在dir jcl/devtools/jpp和我们最新发布的(2.1)zip文件中找到源代码,可以在dir devtools中找到jpp.exe。

答案 2 :(得分:1)

我不知道这样的工具,但编写它应该相对简单。

  1. 使用FindFirstFindNext
  2. 遍历目录中的所有文件
  3. 使用TStringList.LoadFromFile读取所有pas文件。
  4. 遍历字符串并查找{$IfDef}指令。如果条件部分中指定的版本早于D2009,则删除所有文本,直至{$EndIf}
  5. 使用TStringList.SaveToFile将修改后的文件写入磁盘。

答案 3 :(得分:1)

我的建议是只改变你完全管理的代码。但是,如果您还要修改现有的第三方代码,那么我建议您浏览为验证定义的每个IFDEF。有些供应商不使用标准的IFDEF VERxxx调用,而是创建自己的调用,可能称为VER70UP等。最常见的地方是包含文件,因此在每个文件的开头附近寻找一个{$ I ???。INC}文件,然后分析它以了解正在使用的内容以及如何使用。

分析每个$ DEFINE / $ UNDEF的另一个原因是,特定版本的版本可能会打开一个新的定义,而您之前没有检查过......最终导致死代码的定义。

答案 4 :(得分:0)

使用GExperts,您可以使用GrepSearch或GrepRegularExpressions搜索您的代码,然后使用GrepResults中的替换工具删除您需要的任何内容。

  

您可以进行搜索和替换   对所有比赛的操作   列出或仅列出所选文件/匹配。   当您选择其中一个选项时,   出现一个对话框,提示输入   用于代替匹配的字符串   文本。请注意表格   目前开放不能有他们的文字   由于受到限制而被替换   IDE。请关闭所有表格   试图替换其中的文字。