2009-09-04 8 views
46

Sind Kommentare in Windows Ini-Dateien zulässig? (... vorausgesetzt, Sie verwenden die GetPrivateProfileString api Funktionen, sie zu lesen ...)Ermöglichen Standard-Windows-INI-Dateien Kommentare?

[Section] 
Name=Value ; comment 

; full line comment 

Und gibt es eine richtige Spezifikation des INI-Datei-Format überall?

Danke für die Antworten - Aber vielleicht war ich nicht klar genug. Es ist nur das Format wie von Windows API lesen Anrufe, die ich interessiert bin. Ich weiß, dass andere Implementierungen Kommentare erlauben, aber es ist speziell die MS Windows-Spezifikation und Implementierung, die ich muss wissen, über.

+1

Die API gibt den Wert und den Kommentar zurück, Sie müssen nur nach dem SemiColon suchen und diese bei der Begegnung lesen oder ausstreichen, indem Sie einen regulären Ausdruck verwenden oder einfach nach dem suchen; – RoguePlanetoid

+6

@ RoguePlanetoid Ein regulärer Ausdruck, um ein ';' Zeichen zu finden? Ernst!? – IInspectable

+1

@IInspectable Könnte die Regex verwenden, um nur den Kommentar zu lesen, damit das Element nach dem Semikolon extrahiert wird, oder wie ich in meinem Kommentar erwähnte oder suche nach dem; Geben Sie die Alternative an, um den Kommentar selbst zu extrahieren oder nach dem Vorhandensein eines zu suchen. Ich dachte, dass mein Kommentar einen Mehrwert darstellt. Wenn Sie ein Semikolon verwenden, ist das ein unvollständiger Kommentar – RoguePlanetoid

Antwort

22

Ich habe Kommentare in INI-Dateien zu sehen, also ja. Bitte beachten Sie this Wikipedia article. Ich konnte keine offizielle Spezifikation finden, aber das ist die korrekte Syntax für Kommentare, da viele Spiel-INI-Dateien das hatten, wie ich mich erinnere.

bearbeiten

Die API gibt den Wert und die Kommentar (vergessen dies in meiner Antwort zu schweigen), nur konstruieren und Beispiel INI-Datei und rufen Sie die API auf diese (mit Kommentaren), und Sie können sehen, wie Dies wird zurückgegeben.

+1

Bei der Verwendung von Quellen ist es sinnvoller, die autoritativste Quelle zu verwenden und dann irgendwelche unterstützenden Quellen. –

+1

Sicher, das ist eine gute Idee - nie zu spät, um darauf hinzuweisen - auch nach sieben Jahren – RoguePlanetoid

44

Windows-INI-API-Unterstützung für:

  • Zeilenkommentare: ja (mit Semikolon ;)
  • Nachgestellte Kommentare: Kein

Die maßgebliche Quelle ist die Windows-API-Funktion, die Werte aus INI-Dateien

liest

GetPrivateProfileString

Ruft eine Zeichenfolge aus dem angegebenen Abschnitt in einer Initialisierungsdatei.

Der Grund „volle Linie kommentiert:“ Arbeit ist, weil der gewünschte Wert nicht vorhanden.Zum Beispiel, wenn das Parsen folgenden ini Dateiinhalt:

[Application] 
UseLiveData=1 
;coke=zero 
pepsi=diet ;gag 
#stackoverflow=splotchy 

die Werte lesen:

  • UseLiveData: 1
  • coke: nicht vorhanden
  • ;coke: nicht vorhanden
  • pepsi: diet ;gag
  • stackoverflow: nicht präsentieren
  • #stackoverflow: splotchy

aktualisieren: Früher dachte ich, dass das Nummernzeichen (#) ein Pseudo-Line-Kommentarzeichen war. Der Grund dafür, dass # # stackoverflow versteckt ist, liegt darin, dass der Name stackoverflow nicht mehr existiert. Und es stellt sich heraus, dass Semikolon (;) ist eine Linie-Kommentar.

Aber es gibt keine Unterstützung für nachfolgende Kommentare.

+3

Danke. Aber warum ist '; cola' nicht vorhanden? Ich würde denken, es wäre ... – Roddy

+1

Sehr hilfreiche Beispiele, aber ich finde den Wortlaut _ "Der Grund 'volle Zeile Kommentare Arbeit ist, weil der angeforderte Wert nicht existiert" _ schwer zu analysieren. Ich würde klarstellen, dass die Windows-INI-Implementierung das Semikolon vor dem Schlüssel/Wert-Paar (falls vorhanden) erfordert, andernfalls wird es als Teil des Werts betrachtet. – GravityWell

+0

@Roddy Sie haben Recht. Ich war so konzentriert darauf, ** '#' ** zu benutzen, dass ich nicht auf das ** ';' ** geachtet habe. Die Antwort wurde korrigiert, um darauf hinzuweisen, dass das Semikolon wirklich ein Zeilenkommentar ist. –