去除德尔福IFDEf编译器自动指令
-
19-09-2019 - |
题
我目前的工作'继承的'代码(随机分散在整个)一大堆的条件编译器的指示的基础上版本的德尔菲,要回德尔菲2.从现在起,所有发展将有德尔斐2009年或未来。是有一个工具,在德尔斐2009年,或者一个插件,会自动地将编译器的条件代码段的基础上指定的'最低的版本?
解决方案
我强烈推荐 Delphi的启示帕斯卡预处理器(DIPP )
这可以做许多事情与另外一个源文件以除去有条件定义,包括“内联”的包括文件和删除注释(所有课程高度可配置的和可控制由提供给处理器选项的)。
,你可以具有的所有这样的条件句简单地移除或提供一组限定了要应用的的条件定义的功能是特别有用的。然后DIPP将发出反映如何它会出现与所定义的那些符号中的编译器源文件中,但不包含条件指令本身。
所以你的情况,你会简单地定义适当的符号来你的“基线”德尔福版本。
其他提示
你应该得到的绝地武器(帕斯卡器)的 JCL 一个尝试。
在后备箱在我们SVN源可以发现,在dir jcl/具箱/联合规划程序 在我们最新版本(2.1)拉链文件的jpp.exe 可以发现,在dir具箱.
我不知道这样的一个工具,但它应当相对直接的编写。
- 通过循环的所有文件目录中的使用
FindFirst
和FindNext
- 使用
TStringList.LoadFromFile
读取所有的考绩制度文件。 - 通过回和寻找
{$IfDef}
指令。如果版本中指定的条件部分是老年人比D2009删除所有的文本直到{$EndIf}
. - 使用
TStringList.SaveToFile
写修改后的文件的磁盘。
我的建议是只更改代码,你完全管理。然而,如果你也打算修改现有的第三方代码,那么我建议你去通过每个IFDEF进行验证定义。某些供应商不使用标准IFDEF VERxxx电话,但自己创造可以称为像VER70UP或此类。造成这种情况的最常见的地方是在包含文件,所以找了{$我???。INC}附近的每个文件的开头的文件,然后分析这对正在使用什么和如何。
另一个原因分析每个$ DEFINE / $民主基金是一个特定版本的人们可能会打开一个新的定义,你以前没有检查......一个最终通向死代码的事实。
使用 GExperts ,您可以同时使用GrepSearch或GrepRegularExpressions在你的代码进行搜索,然后使用Replace在GrepResults工具删除任何你所需要的。
您可以做一个搜索和替换 在所有的比赛的操作 列表或只选定的文件/匹配。 当您选择这些选项中的一个, 会出现一个对话框,提示输入 字符串代替匹配的使用 文本。需要注意的是多种形式的有 目前开放不能有自己的文字 更换,由于限制 IDE。请关闭所有形式的前 试图替换在其中的文本。