如何在旧的Delphi版本中编译记录的Delphi代码(<2005)

RRU*_*RUZ 8 delphi documentation

我正在使用Documentation Insight功能来记录Delphi库,目前这与Delphi 2005到XE3的工作正常.现在我想添加对旧版Delphi(5,6,7)的支持.

但是当试图在比2005年更小的Delphi版本中编译这样的代码时(Delphi 5,6,7)

 {$REGION 'Documentation'}
 ///    <summary>
 ///      This is a sample text 
 ///    </summary>
 {$ENDREGION}
 TFoo=class
   procedure Tick;
 end;
Run Code Online (Sandbox Code Playgroud)

我收到编译错误

无效的编译器指令REGION

什么是好的,因为REGION当Delphi IDE改为Galileo时引入了保留字(Delphi 2005).

所以,现在作为解决方法,我正在使用这种语法来编译Delphi 5中的代码 - 到XE3.

 {$IFDEF NODEF}{$REGION 'Documentation'}{$ENDIF}
 ///    <summary>
 ///      This is a sample text 
 ///    </summary>
 {$IFDEF NODEF}{$ENDREGION}{$ENDIF}
 TFoo=class
   procedure Tick;
 end;
Run Code Online (Sandbox Code Playgroud)

但是现在使用这样的代码,Documentation Insight不再适用于Delphi XE2和XE3.

所以问题是,如何在旧版本的Delphi中编译记录的Delphi代码而不影响新版Delphi版本中的Documentation Insight?

Rem*_*eau 7

如果您删除了{$REGION}标记,Document Insight仍然有效,旧版本应将文档视为普通注释.您只是无法在支持代码折叠的IDE版本中折叠文档,这就是全部.


Rob*_*ank 5

如果你必须有一个代码库可以在新旧Delphi 中进行编译而没有任何变化,那么这个解决方案将不起作用.

这是丑陋的,当你从较旧版本的Delphi来回移动到新版本时,它必须完成和撤消.

但是,您可以来回地浏览整个项目.

例如,当您从XE2转到D7时,您将转换它

{$REGION 'Documentation'} 
Run Code Online (Sandbox Code Playgroud)

通过插入空格并删除尾随}所以它看起来像这样:

{ $REGION 'Documumentation'
Run Code Online (Sandbox Code Playgroud)

从D7到XE2,你会反过来在每一行的末尾添加一个}

{$ REGION
Run Code Online (Sandbox Code Playgroud)

并删除$后的空格.

就像我说的那样,它很难看.

  • 或者,您可以在`$`之前插入句点并保持结束括号完整,将标记转换为自包含的注释:`{.$ REGION'Documentation'}``{.$ ENDREGION}`.Document Insight仍然有效. (3认同)