123 votes

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

Les commentaires sont-ils autorisés dans les fichiers ini de Windows ? (...en supposant que vous utilisiez l'option Chaîne de profil privé pour les lire...)

[Section]
Name=Value   ; comment

; full line comment

Existe-t-il quelque part une spécification correcte du format de fichier .INI ?

Merci pour les réponses - Cependant, je n'ai peut-être pas été assez clair. Il s'agit uniquement du format tel que lu par les appels de l'API Windows qui m'intéressent. Je sais que d'autres implémentations autorisent les commentaires, mais c'est spécifiquement la spécification et l'implémentation de MS Windows que j'ai besoin de connaître.

130voto

Ian Boyd Points 50743

Prise en charge de l'API INI de Windows pour :

  • Commentaires sur les lignes : oui, en utilisant le point-virgule ;
  • Commentaires de suivi : Non

La source qui fait autorité est la fonction de l'API Windows qui lit les valeurs des fichiers INI

Chaîne de profil privé

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

La raison "commentaires sur la ligne complète" c'est parce que la valeur demandée n'existe pas. Par exemple, lors de l'analyse du texte suivant ini le contenu du fichier :

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

Lecture des valeurs :

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

Mise à jour : J'avais l'habitude de penser que le signe numérique (#) était un pseudo-caractère de commentaire de ligne. La raison pour laquelle l'utilisation de # en tête de ligne permet de cacher stackoverflow c'est parce que le nom stackoverflow n'existe plus. Et il s'avère que le point-virgule ( ; ) es un commentaire de ligne.

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

31voto

RoguePlanetoid Points 1490

J'ai vu des commentaires dans des fichiers INI, donc oui. Veuillez vous référer à cet article de Wikipedia . Je n'ai pas trouvé de spécification officielle, mais c'est la syntaxe correcte pour les commentaires, car de nombreux fichiers INI de jeux avaient cette syntaxe, si je me souviens bien.

Editer

L'API renvoie la valeur et le commentaire (j'ai oublié de le mentionner dans ma réponse). Il suffit de construire un fichier INI d'exemple et d'appeler l'API sur ce fichier (avec des commentaires) pour voir comment il est renvoyé.

12voto

Antoine Meltzheim Points 733

UTILISER UN POINT-VIRGULE EN DÉBUT DE LIGNE --->> ; <<---

Ex.

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

2voto

Thomas W. Points 3812

J'aime l'analyse de @Ian Boyd parce qu'il est basé sur les documents officiels de l'Union européenne. GetPrivateProfileString() de Microsoft.

Dans mes tentatives d'écriture d'un analyseur INI compatible avec Microsoft, j'ai un problème d'interprétation. regarder de plus près à ladite API Microsoft et pour les commentaires Je l'ai découvert :

  • vous pouvez ajouter des commentaires de ligne en utilisant le point-virgule
  • le point-virgule ne doit pas nécessairement être le premier caractère de la ligne ; il peut être précédé d'un espace, d'une tabulation ou d'une tabulation verticale
  • vous pouvez avoir des "commentaires" à la fin d'une section même sans point-virgule. Il ne s'agit probablement pas d'un commentaire, mais l'analyseur l'ignorera.
  • les valeurs situées en dehors d'une section ne sont pas accessibles (du moins je n'ai pas trouvé de moyen), ce qui les rend inutiles, sauf à des fins de commentaire
  • Il s'agit certainement d'un abus, mais l'analyseur déborde à 65536 caractères, de sorte que tout ce qui se trouve après ne fera pas partie de la valeur non plus. Je ne m'y fierais pas, car Microsoft pourrait corriger ce problème dans les versions ultérieures de Windows. De plus, ce n'est pas très utile en tant que commentaire lorsque vous ne le voyez pas.

Exemple :

this=cannot be accessed
[section]this=is ignored
;this=is a line comment
      ;this=is a comment preceded by spaces
key=value                                <... 65530 spaces ...>this=cannot be parsed

0voto

Koekiebox Points 2133

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X