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

8
我正在使用文档洞察功能来记录一个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;

我收到了编译器错误。

无效的编译器指令REGION。

这很好理解,因为当Delphi IDE被改成Galileo(Delphi 2005)时,REGION保留字被引入。

因此,现在我正在使用这种语法来编译Delphi 5到XE3中的代码。

 {$IFDEF NODEF}{$REGION 'Documentation'}{$ENDIF}
 ///    <summary>
 ///      This is a sample text 
 ///    </summary>
 {$IFDEF NODEF}{$ENDREGION}{$ENDIF}
 TFoo=class
   procedure Tick;
 end;

但是现在使用这样的代码,Documentation Insight 在 Delphi XE2 和 XE3 中不再起作用。

因此问题是,我如何在旧版本的 Delphi 中编译文档化的 Delphi 代码,而不影响新版本 Delphi 中的 Documentation Insight?

3个回答

7
如果您移除 {$REGION} 标记,Document Insight 仍然可以使用,旧版本应将文档视为普通注释。在支持代码折叠的 IDE 版本中,您只是不能再折叠文件了。

5
如果您需要一个代码库,可以在旧版和新版Delphi中编译而不需要任何更改,那么这种解决方案就行不通了。
这很丑陋,而且在从旧版本的Delphi切换到新版本时必须进行添加和撤销操作。
但是,您可以在整个项目中进行搜索和转换。
例如,从XE2转换到D7时,您需要将此内容转换为:
{$REGION 'Documentation'} 

通过插入一个空格并删除尾部的},使其看起来像这样:
{ $REGION 'Documumentation'

从D7升级到XE2,您需要反过来,在以

开头的每一行末尾添加一个}。
{$ REGION

并且移除$后面的空格。

就像我说的那样,这很丑陋。


3
另外,您可以在 $ 之前插入一个句点,并保留闭合括号,将标签转换为独立的注释:{.$REGION 'Documentation'} {.$ENDREGION}。Document Insight 仍然可以正常工作。 - Remy Lebeau

0

Documentation Insight支持一些内置的区域样式(请参见选项对话框)。您可以选择兼容样式,它将自动生成指令,如{$IFDEF NoDEF}{$REGION 'xxx'}{$ENDIF}。


就像我在问题中所说的那样,在Delphi XE2和XE3中使用{$IFDEF NODEF}{$REGION 'Documentation'}{$ENDIF}会导致Documentation Insight无法工作。 - RRUZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接