Delphi:是否有一个工具可以删除特定条件符号的条件指令?

时间:2012-10-16 17:42:06

标签: delphi

我有很多单元包含许多条件指令块,例如:

{$IFDEF DELPHI6ANDLOWER}
  *Do something 1*
{$ELSE}
  *Do something 2*
{$ENDIF}

现在,我决定放弃对Delphi 6(VER140)和更低版本的支持。

有没有可以发挥魔力的工具?希望上面的代码变成:

  *Do something 2*

我测试过ModelMaker,CnPack,GExperts,但是没有一个能够做到这一点。

2 个答案:

答案 0 :(得分:16)

Delphi Inspiration的免费软件程序DIPP可以删除条件。

http://www.yunqa.de/delphi/doku.php/products/dipp/index

答案 1 :(得分:4)

首先,我确认 @ctomita 提到的DIPP工具完全符合我的情况。

其次,我认为与人们分享如何使用该工具来解决我的案例可能会很有用。

Test1.pas

//--------------------------------------
{$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"

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会像编译器那样处理源代码。