2013-07-06 2 views
7

Ich füge meinem Delphi-Code Kommentare für die Dokumentation hinzu. Eines der Dinge, die ich zu dokumentieren versuche, ist die JSON-Struktur. Daher versuche ich, im Code kommentierte JSON-Beispieldaten einzugeben. JSON verwendet jedoch häufig die verschnörkelten Klammern { }, die zufälligerweise auch für Kommentare in Delphi verwendet wird.Gibt es eine Möglichkeit, einer abschließenden Klammer für Kommentare zu entkommen?

Aus diesem Grund kann ich keine Möglichkeit finden, diese Kommentare hinzuzufügen. In der Regel für die Dokumentation Kommentarblöcke Ich benutze { }, zum Beispiel:

{ 
    This unit does this and that. 

    Use TSomeComponent to do bla bla 
} 

Wenn ich versuche, JSON-Daten zu dokumentieren, die Schließbügel } beendet den Kommentar - auch wenn die Zeile mit dem einzeiligen Kommentar vorangestellt ist //, so

{ 
    This is how the JSON structure looks: 

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

Sobald es eine geschlossene Klammer }, die kommentar~~POS=TRUNC wird unkommentiert, auch wenn es mit den beiden Schrägstriche voran ist: auch dies nicht funktioniert. Also nimmt Delphi nach dieser Klammer das Komma auf. Am Ende kann ich keine Möglichkeit finden, JSON-Samples in meinem Code zu dokumentieren.

Ich versuchte sogar mit (* *) um den JSON-Block, aber immer noch kein Glück.

Gibt es einen Weg um diese oder bin ich dabei fest?

+3

Schön zu sehen ['Jachguate Highlighter'] (http://meta.stackexchange.com/a/172057/179541) in Aktion :-) – TLama

+0

@TLama Ich dachte gerade fast genau das, mit Blick auf das Komma in die Frage wird auch aus dem Kommentar ausgeschlossen, und in der Antwort ist es Teil des Kommentars, genau wie in Delphi: D –

Antwort

12

ich die Lösung entdeckt, während ich diese Frage tippe, so jetzt ist es Q Ich beantworte/A-Stil ...

Wenn der Kommentarblock, wie in dem Code in der Frage oben beginnt zuerst, es beginnt mit einer Öffnungsklammer {. Daher sucht der Compiler verzweifelt nach einer schließenden Klammer, selbst wenn sich diese schließende Klammer in einer anderen kommentierten Codezeile befindet. Wenn jedoch jede Zeile in diesem Kommentarblock mit zwei Schrägstrichen // anstelle einer öffnenden Klammer { beginnt, sucht der Compiler nicht nach der schließenden Klammer }. Anstatt also der Code in der Frage oben, das ist, wie es geschrieben werden soll:

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

Also, solange Sie nicht den Kommentarblock mit einer öffnenden Klammer beginnen können, dann wird der Compiler nicht versuchen um den Kommentarblock zu beenden, wenn eine schließende Klammer gefunden wird.

Auch die Verwendung von (* *) sollte gut funktionieren, solange Sie es nicht verwenden, nachdem Sie bereits { verwendet haben. Setzen Sie den gesamten Block mit (* und *) und der Compiler jede { oder } innen ignorieren, etwa so:

(* 
    This is how the JSON structure looks: 

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

Wesentlichen von dem Moment an Sie beginnen einen Kommentar, ob es // sein, { oder (*, es ignoriert jedes weitere Öffnen eines anderen Kommentartyps - es sucht nur nach dem Ende seines eigenen Kommentartyps. So wird // nach dem Ende der Zeile suchen, { wird nach } suchen, und (* wird nach *) suchen.

Verwandte Themen