2013-07-06 44 views
7

我正在向我的Delphi代碼添加註釋以獲取文檔。我試圖記錄的事情之一是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" 
// } 
} 

只要有一個右括號},該註釋行變得註釋掉,即使它與兩個斜槓前綴。所以德爾福在這個括號後面加上了逗號。所以最後,我無法弄清楚我可以在代碼中記錄JSON示例的任何方式。

我甚至嘗試過在JSON塊周圍使用(* *),但仍然沒有運氣。

有沒有辦法解決這個問題還是我堅持使用它?

+3

很高興看到['jachguate's highlighter'](http://meta.stackexchange.com/a/172057/179541)在行動:-) – TLama

+0

@TLama我只是在想,幾乎就是這樣,看着逗號這個問題也被排除在評論之外,並且在答案中它是評論的一部分,就像在Delphi中:D –

回答

12

我發現瞭解決方案,同時我打字這個問題,所以我現在要回答它Q/A風格。

當註釋塊首先啓動如在上面的問題的代碼,它啓動用開頭的括號{。所以,編譯器拼命尋找一個閉括號,即使這個閉括號是在另一個註釋行代碼中。但是,如果此註釋塊中的每行都以兩個斜槓//而不是開頭的括號{開頭,那麼編譯器將不會尋找右括號}。所以,與其在上面的問題的代碼,這是它應該怎麼寫:

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

所以只要你不開始與左括號註釋塊,則編譯器不會嘗試當它找到一個右括號時結束註釋塊。

另外,使用(* *)應該可以正常工作,只要您在使用{後不使用它即可。與(**)包圍整個區塊,編譯器會忽略任何{}裏面,像這樣:

(* 
    This is how the JSON structure looks: 

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

從本質上講,從此刻開始一個評論,無論是//{,或(*,它將忽略任何其他類型的評論的進一步開放 - 它只會尋找它自己的評論類型的結束。因此,//將尋找該行的結尾,{將尋找},而(*將尋找*)

相關問題