8

ドキュメント用に Delphi コードにコメントを追加しています。私が文書化しようとしているものの 1 つは JSON 構造であるため、サンプルの JSON データをコメント化してコードに入れようとしています。ただし、JSON では波括弧が広く使用されており{ }、偶然にも Delphi のコメントにも使用されています。

このため、これらのコメントを追加する方法がわかりません。通常、ドキュメントのコメント ブロックには、次のように使用{ }します。

{
  This unit does this and that.

  Use TSomeComponent to do bla bla
}

JSON データを文書化しようとすると}、行の先頭に単一行のコメントが付けられていても、閉じ括弧でコメントが終了する//ため、これでも機能しません。

{
  This is how the JSON structure looks:

//    {
//      "some_string": "value",
//      "some_object": {
//        "something": 123
//      }, //<-- Compiler detects this comma
//      "something_else": "some other string"
//    }
}

閉じ括弧があるとすぐに}、2 つのスラッシュが先頭に付いていても、コメント行はコメント解除されます。そのため、Delphi はこのブラケットの後のコンマを取得します。結局、コード内で JSON サンプルを文書化する方法がわかりません。

JSONブロックを使用(* *)してみましたが、まだ運がありません。

これを回避する方法はありますか、それとも私はそれにこだわっていますか?

4

1 に答える 1

15

この質問を入力しているときに解決策を発見したので、Q/A スタイルで回答します...

上記の質問のコードのように、コメント ブロックが最初に始まるときは、開始ブラケットで始まり{ます。そのため、コンパイラは、閉じ括弧がコードの別のコメント行にある場合でも、閉じ括弧を必死に探します。//ただし、このコメント ブロックのすべての行が開き括弧ではなく2 つのスラッシュで始まる{場合、コンパイラは閉じ括弧を探しません}。したがって、上記の質問のコードの代わりに、次のように記述します。

//  This is how the JSON structure looks:
//  
//    {
//      "some_string": "value",
//      "some_object": {
//        "something": 123
//      },
//      "something_else": "some other string"
//    }

したがって、コメント ブロックを左角かっこで開始しない限り、コンパイラは右角かっこを見つけたときにコメント ブロックを終了しようとしません。

また、(* *)すでに使用した後に使用しない限り、使用しても問題なく動作するはずです{。ブロック全体を(*andで囲む*)と、コンパイラは次のように、{または}内部を無視します。

(*
  This is how the JSON structure looks:

    {
      "some_string": "value",
      "some_object": {
        "something": 123
      },
      "something_else": "some other string"
    }
*)

//基本的に、 、{、またはのいずれであっても、 1 つのコメントを開始した瞬間から、(*他のタイプのコメントのそれ以降の開始は無視されます。独自のコメント タイプの終了のみが検索されます。//行の終わりを探し、{を探し}(*を探します*)

于 2013-07-06T23:17:01.110 に答える