我有很多单元包含许多条件指令块,例如:
{$IFDEF DELPHI6ANDLOWER}
*Do something 1*
{$ELSE}
*Do something 2*
{$ENDIF}
现在,我决定放弃对Delphi 6(VER140)和更低版本的支持。
有没有可以发挥魔力的工具?希望上面的代码变成:
*Do something 2*
我测试过ModelMaker,CnPack,GExperts,但是没有一个能够做到这一点。
答案 0 :(得分:16)
Delphi Inspiration的免费软件程序DIPP可以删除条件。
答案 1 :(得分:4)
首先,我确认 @ctomita 提到的DIPP工具完全符合我的情况。
其次,我认为与人们分享如何使用该工具来解决我的案例可能会很有用。
//--------------------------------------
{$IFDEF ONE}
ShowMessage('If ONE was defined');
WriteLn('If ONE was defined');
{$IFDEF ONE_ONE}
ShowMessage('If ONE_ONE was defined');
WriteLn('If ONE_ONE was defined');
{$ENDIF}
{$ELSE}
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
{$ENDIF}
//--------------------------------------
{$IFNDEF ONE}
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
{$ELSE}
ShowMessage('If ONE was defined');
WriteLn('If ONE was defined');
{$ENDIF}
//--------------------------------------
要从Test1.pas中移除所有 ONE
条件块,并使用假设 ,就好像一样有条件当前定义的名为 ZERO
的符号,使用命令提示符中的此命令:
dipp -o -c -dZERO -h-ONE "Test1.pas" "Test1_output.pas"
//--------------------------------------
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
//--------------------------------------
ShowMessage('If ONE was not defined');
WriteLn('If ONE was not defined');
//--------------------------------------
请注意,当指定 -c
选项时,DIPP会跳过未定义条件所包含的代码,根据定义的条件插入包含文件。换句话说,DIPP会像编译器那样处理源代码。