Les fichiers .ini standard de Windows autorisent-ils les commentaires?


92

Les commentaires sont-ils autorisés dans les fichiers ini Windows? (... en supposant que vous utilisez les fonctions api GetPrivateProfileString pour les lire ...)

[Section]
Name=Value   ; comment

; full line comment

Et, y a-t-il une spécification appropriée du format de fichier .INI n'importe où?

Merci pour les réponses - Mais peut-être que je n'étais pas assez clair. Ce n'est que le format lu par les appels d'API Windows qui m'intéresse. Je sais que d'autres implémentations autorisent les commentaires, mais c'est spécifiquement la spécification et l'implémentation MS Windows que je dois connaître.


1
L'API renvoie la valeur et le commentaire, il vous suffit de rechercher le SemiColon et de le lire, ou de le supprimer lors de la rencontre, en utilisant une expression régulière ou simplement de rechercher le;
RoguePlanetoid le

7
@RoguePlanetoid Une expression régulière, pour trouver un ;personnage? Sérieusement!?
IInspectable

1
@IInspectable Pourrait utiliser l'expression régulière pour lire le commentaire uniquement afin d'extraire l'élément après le point-virgule, ou comme je l'ai mentionné dans mon commentaire ou recherchez le; donnant l'alternative pour extraire le commentaire lui-même ou rechercher la présence d'un commentaire Je pensais que mon commentaire avait une valeur ajoutée, voir simplement s'il y avait un point-virgule il y avait un commentaire incomplet
RoguePlanetoid

Réponses:


96

Prise en charge de l'API Windows INI pour:

  • Commentaires sur la ligne : oui, en utilisant un point-virgule;
  • Commentaires de fin: Non

La source faisant autorité est la fonction API Windows qui lit les valeurs des fichiers INI

GetPrivateProfileString

Récupère une chaîne de la section spécifiée dans un fichier d'initialisation.

La raison pour laquelle les «commentaires de ligne complète» fonctionnent est que la valeur demandée n'existe pas. Par exemple, lors de l'analyse du inicontenu du fichier suivant :

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

Lecture des valeurs:

  • UseLiveData: 1
  • coke: pas présent
  • ;coke: pas présent
  • pepsi: diet ;gag
  • stackoverflow: pas présent
  • #stackoverflow: splotchy

Mise à jour : je pensais que le signe dièse (#) était un pseudo caractère de commentaire de ligne. La raison pour laquelle l'utilisation du # principal fonctionne pour masquer stackoverflowest que le nom stackoverflown'existe plus. Et il s'avère que le point-virgule ( ;) est un commentaire de ligne.

Mais il n'y a pas de support pour les commentaires de fin.


3
Des exemples très utiles, mais je trouve que le libellé «La raison pour laquelle les 'commentaires de la ligne complète' fonctionnent est parce que la valeur demandée n'existe pas» difficile à analyser. Je préciserais que l'implémentation Windows INI nécessite le point-virgule avant la paire clé / valeur (si présente), sinon elle est considérée comme faisant partie de la valeur.
GravityWell

@Roddy Vous avez raison. J'étais tellement concentré sur l'utilisation #que je n'ai pas prêté attention au ;. Correction de la réponse pour souligner que le point-virgule est vraiment un commentaire de ligne.
Ian Boyd

29

J'ai vu des commentaires dans des fichiers INI, donc oui. Veuillez vous référer à cet article de Wikipedia . Je n'ai pas pu trouver de spécification officielle, mais c'est la syntaxe correcte pour les commentaires, car de nombreux fichiers INI de jeu l'avaient dans mes souvenirs.

Éditer

L'API renvoie la valeur et le commentaire (j'ai oublié de le mentionner dans ma réponse), construisez simplement un fichier INI d'exemple et appelez l'API à ce sujet (avec des commentaires) et vous pouvez voir comment cela est retourné.


1
Lors de l'utilisation de sources, il est plus judicieux d'utiliser la source la plus fiable, puis toutes les sources de support.
Mike Collins

1
Bien sûr, c'est une bonne idée - jamais trop tard pour le signaler - même après sept ans
RoguePlanetoid

9

UTILISEZ UN SEMI-COLON AU DÉBUT DE LIGNE --- >>; << ---

Ex.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.