我目前正在使用'继承'代码,该代码具有(随机散布)一大堆基于Delphi版本的条件编译器指令,返回Delphi 2。从现在开始,所有开发都将采用Delphi 2009或未来。 Delphi 2009中是否有一个工具或插件,它会根据指定的“最小”版本自动删除编译器条件代码段?
答案 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)
我不知道这样的工具,但编写它应该相对简单。
FindFirst
和FindNext
TStringList.LoadFromFile
读取所有pas文件。 {$IfDef}
指令。如果条件部分中指定的版本早于D2009,则删除所有文本,直至{$EndIf}
。TStringList.SaveToFile
将修改后的文件写入磁盘。答案 3 :(得分:1)
我的建议是只改变你完全管理的代码。但是,如果您还要修改现有的第三方代码,那么我建议您浏览为验证定义的每个IFDEF。有些供应商不使用标准的IFDEF VERxxx调用,而是创建自己的调用,可能称为VER70UP等。最常见的地方是包含文件,因此在每个文件的开头附近寻找一个{$ I ???。INC}文件,然后分析它以了解正在使用的内容以及如何使用。
分析每个$ DEFINE / $ UNDEF的另一个原因是,特定版本的版本可能会打开一个新的定义,而您之前没有检查过......最终导致死代码的定义。
答案 4 :(得分:0)
使用GExperts,您可以使用GrepSearch或GrepRegularExpressions搜索您的代码,然后使用GrepResults中的替换工具删除您需要的任何内容。
您可以进行搜索和替换 对所有比赛的操作 列出或仅列出所选文件/匹配。 当您选择其中一个选项时, 出现一个对话框,提示输入 用于代替匹配的字符串 文本。请注意表格 目前开放不能有他们的文字 由于受到限制而被替换 IDE。请关闭所有表格 试图替换其中的文字。