I file .ini standard di Windows consentono i commenti?


92

I commenti sono consentiti nei file ini di Windows? (... supponendo che tu stia utilizzando le funzioni API GetPrivateProfileString per leggerle ...)

[Section]
Name=Value   ; comment

; full line comment

E c'è una specifica corretta del formato di file .INI ovunque?

Grazie per le risposte - Tuttavia forse non sono stato abbastanza chiaro. È solo il formato letto dalle chiamate API di Windows che mi interessa. So che altre implementazioni consentono commenti, ma è specificamente la specifica e l'implementazione di MS Windows di cui ho bisogno.


1
L'API restituisce il valore e il commento, devi solo cercare il semiColon e leggere, o rimuoverlo quando incontri, usando un'espressione regolare o semplicemente cercare il;
RoguePlanetoid

7
@RoguePlanetoid Un'espressione regolare, per trovare un ;personaggio? Sul serio!?
Rilevabile il

1
@IInspectable Potresti usare la regex per leggere solo il commento, quindi estrai l'elemento dopo il punto e virgola, o come ho menzionato nel mio commento o cerca il; dando l'alternativa per estrarre il commento stesso o cercare la presenza di uno Ho pensato che il mio commento aggiungesse un valore, solo vedendo se un punto e virgola c'era un commento incompleto
RoguePlanetoid

Risposte:


96

Supporto API Windows INI per:

  • Commenti alla riga : sì, utilizzando il punto e virgola;
  • Commenti finali: no

La fonte autorevole è la funzione API di Windows che legge i valori dai file INI

GetPrivateProfileString

Recupera una stringa dalla sezione specificata in un file di inizializzazione.

Il motivo per cui i "commenti a riga intera" funzionano è perché il valore richiesto non esiste. Ad esempio, durante l'analisi dei seguenti inicontenuti di file:

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

Leggere i valori:

  • UseLiveData: 1
  • coke: non presente
  • ;coke: non presente
  • pepsi: diet ;gag
  • stackoverflow: non presente
  • #stackoverflow: splotchy

Aggiornamento : pensavo che il segno del numero (#) fosse uno pseudo carattere di commento di riga. Il motivo per cui l'uso di # iniziale funziona per nascondere stackoverflowè perché il nome stackoverflownon esiste più. E risulta che il punto e virgola ( ;) è un commento di riga.

Ma non c'è supporto per i commenti finali.


3
Esempi molto utili, ma trovo che la formulazione "Il motivo per cui" la riga completa dei commenti "funziona è perché il valore richiesto non esiste" difficile da analizzare. Vorrei chiarire dicendo che l'implementazione di Windows INI richiede il punto e virgola prima della coppia chiave / valore (se presente), altrimenti è considerata parte del valore.
GravityWell

@Roddy Hai ragione. Ero così concentrato sull'uso #che non ho prestato attenzione al file ;. Corretta la risposta per sottolineare che il punto e virgola è davvero un commento di riga.
Ian Boyd

29

Ho visto commenti nei file INI, quindi sì. Fare riferimento a questo articolo di Wikipedia . Non sono riuscito a trovare una specifica ufficiale, ma questa è la sintassi corretta per i commenti, poiché molti file INI di gioco avevano questa come ricordo.

modificare

L'API restituisce il valore e il commento (ho dimenticato di menzionarlo nella mia risposta), basta costruire un file INI di esempio e chiamare l'API su questo (con commenti) e puoi vedere come viene restituito.


1
Quando si usano le fonti, ha più senso usare la fonte più autorevole e poi qualsiasi fonte di supporto.
Mike Collins

1
Certo che è una buona idea - non è mai troppo tardi per
dirlo

9

UTILIZZARE UN SEMI-COLON ALL'INIZIO DELLA RIGA --- >>; << ---

Ex.

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.