Os arquivos .ini padrão do Windows permitem comentários?

93

Os comentários são permitidos em arquivos ini do Windows? (... supondo que você esteja usando as funções da API GetPrivateProfileString para lê-los ...)

[Section]
Name=Value   ; comment

; full line comment

E existe uma especificação adequada do formato de arquivo .INI em algum lugar?

Obrigado pelas respostas - No entanto, talvez eu não tenha sido claro o suficiente. É apenas o formato lido pelas chamadas de API do Windows que estou interessado. Sei que outras implementações permitem comentários, mas é especificamente a especificação e implementação do MS Windows que preciso saber.

Roddy
fonte
1
A API retorna o Valor e o Comentário, você só precisa procurar o SemiColon e ler, ou retirar isso ao encontrar, usando uma expressão regular ou apenas procurar;
RoguePlanetoid
7
@RoguePlanetoid Uma expressão regular, para encontrar um ;personagem? A sério!?
Inspecionável
1
@IInspectable poderia usar o regex para ler o comentário apenas para extrair o elemento após o ponto-e-vírgula, ou como mencionei em meu comentário ou procure o; dando a alternativa de extrair o próprio comentário ou procurar a presença de um que eu achei que meu comentário agregou valor, apenas ver se havia um ponto e vírgula havia um comentário incompleto
RoguePlanetoid

Respostas:

98

Suporte para Windows INI API para:

  • Comentários de linha : sim, usando ponto e vírgula;
  • Comentários finais: Não

A fonte oficial é a função da API do Windows que lê valores de arquivos INI

GetPrivateProfileString

Recupera uma string da seção especificada em um arquivo de inicialização.

O motivo pelo qual os "comentários de linha completa" funcionam é porque o valor solicitado não existe. Por exemplo, ao analisar o seguinte iniconteúdo de arquivo:

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

Lendo os valores:

  • UseLiveData: 1
  • coke: não presente
  • ;coke: não presente
  • pepsi: diet ;gag
  • stackoverflow: não presente
  • #stackoverflow: splotchy

Atualização : Eu costumava pensar que o sinal de número (#) era um caractere de comentário de linha pseudo. A razão de usar # à esquerda para ocultar stackoverflowé porque o nome stackoverflownão existe mais. E acontece que o ponto e vírgula ( ;) é um comentário de linha.

Mas não há suporte para comentários finais.

Ian Boyd
fonte
3
Exemplos muito úteis, mas acho difícil analisar o texto "O motivo dos 'comentários de linha inteira' funcionar porque o valor solicitado não existe" . Eu esclareceria que a implementação do Windows INI requer o ponto-e-vírgula antes do par chave / valor (se presente), caso contrário, ele é considerado parte do valor.
GravityWell
@Roddy Você está certo. Eu estava tão concentrado em usar #que não prestei atenção no ;. Corrigida a resposta para apontar que o ponto e vírgula é realmente um comentário de linha.
Ian Boyd
29

Eu vi comentários em arquivos INI, então sim. Por favor, consulte este artigo da Wikipedia . Não consegui encontrar uma especificação oficial, mas essa é a sintaxe correta para comentários, pois muitos arquivos INI de jogos tinham isso, pelo que me lembro.

Editar

A API retorna o Valor e o Comentário (esqueci de mencionar isso na minha resposta), basta construir um arquivo INI de exemplo e chamar a API sobre isso (com comentários) e você pode ver como isso é retornado.

RoguePlanetoid
fonte
1
Ao usar fontes, faz mais sentido usar a fonte mais confiável e depois quaisquer fontes de apoio.
Wannabe Coder de
1
Claro que é uma boa ideia - nunca é tarde demais para apontar isso - mesmo depois de sete anos
RoguePlanetoid de
9

USE UM SEMI-COLON NO INÍCIO DA LINHA --- >>; << ---

Ex.

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

Sim. Dê uma olhada na Implementação do formato de arquivo INI na Wikipedia e Cloanto (veja o final da página).

Koekiebox
fonte
9
Hum ... o que o faz pensar que esta é a especificação oficial dos arquivos INI?
Reuben
Embora a implementação do Cloanto possa não ser a especificação oficial, gostei da explicação.
Koekiebox