¿Los archivos .ini estándar de Windows permiten comentarios?

92

¿Se permiten comentarios en los archivos ini de Windows? (... asumiendo que está usando las funciones de la api GetPrivateProfileString para leerlas ...)

[Section]
Name=Value   ; comment

; full line comment

Y, ¿existe una especificación adecuada del formato de archivo .INI en alguna parte?

Gracias por las respuestas . Sin embargo, tal vez no fui lo suficientemente claro. Es solo el formato leído por las llamadas a la API de Windows lo que me interesa. Sé que otras implementaciones permiten comentarios, pero es específicamente la especificación y la implementación de MS Windows lo que necesito conocer.

Roddy
fuente
1
La API devuelve el valor y el comentario, solo necesita buscar el punto y coma y leer, o eliminarlo cuando lo encuentre, usando una expresión regular o simplemente buscar el;
RoguePlanetoid
7
@RoguePlanetoid ¿Una expresión regular, para encontrar un ;personaje? ¿¡Seriamente!?
Inspectable
1
@IInspectable Podría usar la expresión regular para leer el comentario solo, así que extraiga el elemento después del punto y coma, o como mencioné en mi comentario o busque el; dando la alternativa para extraer el comentario en sí o buscar la presencia de uno. Pensé que mi comentario agregaba valor, solo viendo si había un punto y coma había un comentario incompleto
RoguePlanetoid

Respuestas:

96

Soporte de API INI de Windows para:

  • Comentarios de línea : sí, usando punto y coma;
  • Comentarios finales: No

La fuente autorizada es la función API de Windows que lee valores de archivos INI

GetPrivateProfileString

Recupera una cadena de la sección especificada en un archivo de inicialización.

La razón por la que funcionan los "comentarios de línea completa" es porque el valor solicitado no existe. Por ejemplo, al analizar el siguiente inicontenido del archivo:

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

Leyendo los valores:

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

Actualización : Solía ​​pensar que el signo de número (#) era un carácter de comentario de pseudo línea. La razón por la que el uso de # inicial funciona para ocultar stackoverflowes porque el nombre stackoverflowya no existe. Y resulta que el punto y coma ( ;) es un comentario de línea.

Pero no hay soporte para comentarios finales.

Ian Boyd
fuente
3
Ejemplos muy útiles, pero encuentro que la redacción "La razón por la que los 'comentarios de línea completa' funcionan es porque el valor solicitado no existe" es difícil de analizar. Aclararía decir que la implementación de Windows INI requiere el punto y coma antes del par clave / valor (si está presente); de lo contrario, se considera parte del valor.
GravityWell
@Roddy Tienes razón. Estaba tan concentrado en usar #que no presté atención al ;. Se corrigió la respuesta para señalar que el punto y coma realmente es un comentario de línea.
Ian Boyd
29

He visto comentarios en archivos INI, así que sí. Consulte este artículo de Wikipedia . No pude encontrar una especificación oficial, pero esa es la sintaxis correcta para los comentarios, ya que muchos archivos INI de juegos tenían esto, según recuerdo.

Editar

La API devuelve el valor y el comentario (olvidé mencionar esto en mi respuesta), simplemente construya un archivo INI de ejemplo y llame a la API sobre esto (con comentarios) y podrá ver cómo se devuelve.

PícaroPlanetoide
fuente
1
Al usar fuentes, tiene más sentido usar la fuente más autorizada y luego cualquier fuente de apoyo.
Mike Collins
1
Seguro que es una buena idea - nunca es tarde para señalarlo - incluso después de siete años
RoguePlanetoid
9

USE UN SEMICOLON AL INICIO DE LA LÍNEA --- >>; << ---

Ex.

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

Si. Eche un vistazo a Wikipedia y Cloanto Implementación del formato de archivo INI (ver la parte inferior de la página).

Koekiebox
fuente
9
Um ... ¿qué te hace pensar que esta es la especificación autorizada sobre los archivos INI?
Reuben
Aunque la implementación de Cloanto podría no ser la especificación oficial, me gustó su explicación.
Koekiebox