2013-01-24 12 views
8

現在、Delphiのライブラリをドキュメント化するためにDocumentation Insight機能を使用しています。今、Delphiの古いバージョン(5,6,7)のサポートを追加したいと思います。古いDelphiのバージョン(2005年)で文書化されたDelphiコードをコンパイルする方法

しかし、試してみるが、2005年よりマイナーDelphiのバージョンでは、このようなコードをコンパイルする(デルファイ5、6、7)

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

私はコンパイルエラー

無効なコンパイラ指令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; 

しかし、このようなコードを使用すると、Documentation InsightはDelphi XE2およびXE3では動作しなくなりました。

質問:私は、以前のバージョンのDelphiで文書化されたDelphiコードを、新しいDelphiバージョンのDocumentation Insightに影響を与えずにコンパイルできますか?

答えて

7

{$REGION}タグを取り除くと、Document Insightは引き続き動作し、古いバージョンではドキュメントを通常のコメントとして扱う必要があります。コード折りたたみをサポートするIDEバージョンでは、もうドキュメントを折りたたむことはできません。それだけです。

5

をコンパイルする1つのコードベースを古いDelphiと新しいDelphiに変更しない場合は、このソリューションは機能しません。

デルファイの古いバージョンから新しいバージョンに前後するにつれて醜いので、実行して元に戻す必要があります。

しかし、プロジェクト全体を前後にgrepすることができます。 XE2からD7に行くときは、たとえば、あなたがスペースを挿入し、末尾を削除することによって、この

{$REGION 'Documentation'} 

を変換したい

}ので、それは次のようになります。

{ $REGION 'Documumentation' 

と行きますD7からXE2に戻ると、すべての行末にaを追加して、末尾に

{$ REGION 

の後のスペースを削除します。

私が言ったように、それは醜いです。

+1

+1は巧妙なトリックです。 –

+3

また、 '$'の前にピリオドを挿入し、閉じ括弧をそのまま残して、タグを自己完結的なコメントにすることもできます: '{。$ REGION 'Documentation'}' '{。$ ENDREGION}'。 Document Insightは引き続き機能します。 –

0

Documentation Insightは、いくつかのビルトインリージョンスタイルをサポートしています(オプションダイアログを参照)。互換性のあるスタイルを選択すると、{$ IFDEF NoDEF} {$ REGION 'xxx'} {$ ENDIF}のようなディレクティブが自動的に生成されます。

+0

私の質問で、 '{$ IFDEF NODEF} {$ REGION 'ドキュメント}} {$ ENDIF}'を使用した場合、Document InsightはDelphi XE2およびXE3で動作しなくなりました。 – RRUZ

関連する問題