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.


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.