2009-09-04 4 views
46

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

[Section] 
Name=Value ; comment 

; full line comment 

Et, est-il une spécification correcte du format de fichier .ini partout?

Merci pour les réponses - Cependant peut-être que je n'étais pas assez clair. C'est uniquement le format lu par Windows API Calls qui m'intéresse. Je sais que d'autres implémentations autorisent les commentaires, mais ce sont surtout les spécifications MS Windows et l'implémentation que je dois connaître.

+1

L'API retourne la valeur et le commentaire, il suffit de chercher le semi-colon et de le lire, ou de le supprimer lors de la rencontre, en utilisant une expression régulière ou simplement en cherchant le; – RoguePlanetoid

+6

@RoguePlanetoid Une expression régulière pour trouver un caractère ';' Sérieusement!? – IInspectable

+1

@IInspectable Pourrait utiliser la regex pour lire le commentaire seulement afin d'extraire l'élément après le point-virgule, ou comme je l'ai mentionné dans mon commentaire ou chercher le; donner l'alternative pour extraire le commentaire lui-même ou chercher la présence d'un je pensais que mon commentaire ajoutait de la valeur, juste voir si un point-virgule était là était un commentaire incomplet – RoguePlanetoid

Répondre

22

J'ai vu des commentaires dans les fichiers INI, donc oui. Veuillez vous référer au this Wikipedia article. 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 avaient ceci comme je me souviens.

Modifier

L'API renvoie la valeur et le Commentaire (oublié de mentionner dans ma réponse), juste construire et exemple de fichier INI et appeler l'API sur ce (avec des commentaires) et vous pouvez voir comment ceci est retourné.

+1

En utilisant des sources, il est plus logique d'utiliser la source la plus autorisée puis toutes les sources de soutien. –

+1

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

44

INI Windows support API pour:

  • Ligne commentaires: oui (en utilisant point-virgule ;)
  • commentaires Trailing: Pas

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

GetPrivateProfileString

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

La raison « ligne complète commentaires » travail est parce que la valeur demandée n'existe pas.Par exemple, lors de l'analyse du ini contenu 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: ne présentent
  • #stackoverflow: splotchy

Mise à jour: Je pensais que le signe dièse (#) était un personnage ligne commentaire pseudo. La raison d'utiliser # leader fonctionne pour masquer stackoverflow parce que le nom stackoverflow n'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 finaux.

+3

Merci. Mais pourquoi «coke» n'est-il pas présent? Je pense que ce serait ... – Roddy

+1

Des exemples très utiles, mais je trouve le libellé _ "Le motif" commentaires de ligne complète "est parce que la valeur demandée n'existe pas" _ difficile à analyser. Je voudrais clarifier pour dire que l'implémentation Windows INI nécessite le point-virgule avant la paire clé/valeur (si elle est présente), sinon elle est considérée comme faisant partie de la valeur. – GravityWell

+0

@Roddy Vous avez raison. J'étais si concentré sur l'utilisation de ** '#' ** que je n'ai pas fait attention à ** ';' **. Correction de la réponse pour souligner que le point-virgule est vraiment un commentaire de ligne. –

Questions connexes