Допускаются ли комментарии в стандартных файлах .ini Windows?

92

Разрешены ли комментарии в ini-файлах Windows? (... предполагая, что вы используете функции API GetPrivateProfileString для их чтения ...)

[Section]
Name=Value   ; comment

; full line comment

И есть ли где-нибудь надлежащая спецификация формата файла .INI?

Спасибо за ответы. Но, возможно, я не совсем понял. Меня интересует только формат, читаемый вызовами Windows API . Я знаю, что другие реализации допускают комментарии, но мне нужно знать, в частности, спецификацию и реализацию MS Windows.

Родди
источник
1
API возвращает значение и комментарий, вам просто нужно найти SemiColon и прочитать или вырезать его при обнаружении, используя регулярное выражение или просто найти;
RoguePlanetoid
7
@RoguePlanetoid Регулярное выражение, чтобы найти ;персонажа? Шутки в сторону!?
IInspectable
1
@IInspectable Можно использовать регулярное выражение только для чтения комментария, поэтому извлеките элемент после точки с запятой или, как я уже упоминал в своем комментарии, или найдите; давая альтернативу извлечь комментарий самого или посмотреть на присутствие одного я думал , мой комментарий добавочной стоимости, просто увидеть , если точка с запятой там был неполный комментарий
RoguePlanetoid

Ответы:

96

Поддержка Windows INI API для:

  • Комментарии к строке : да, с использованием точки с запятой;
  • Завершающие комментарии: Нет

Авторитетным источником является функция Windows API, которая считывает значения из файлов INI.

GetPrivateProfileString

Извлекает строку из указанного раздела в файле инициализации.

Причина, по которой работают «полнострочные комментарии», заключается в том, что запрошенное значение не существует. Например, при разборе следующего iniсодержимого файла:

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

Чтение значений:

  • UseLiveData: 1
  • coke: нет
  • ;coke: нет
  • pepsi: diet ;gag
  • stackoverflow: нет
  • #stackoverflow: splotchy

Обновление : раньше я думал, что знак номера (#) был символом псевдострочного комментария. Причина, по которой использование ведущего символа # работает, чтобы скрыть, stackoverflowзаключается в том, что имя stackoverflowбольше не существует. И оказывается, что точка с запятой ( ;) - это строчный комментарий.

Но нет поддержки конечных комментариев.

Ян Бойд
источник
3
Очень полезные примеры, но я считаю, что формулировку «Причина, по которой работают« полнострочные комментарии »в том, что запрошенное значение не существует», трудно разобрать. Я хотел бы пояснить, что реализация Windows INI требует точки с запятой перед парой ключ / значение (если она есть), в противном случае она считается частью значения.
GravityWell
@Roddy Ты прав. Я был так сосредоточен на использовании, #что не обращал внимания на ;. Исправлен ответ, чтобы указать, что точка с запятой действительно является комментарием к строке.
Ян Бойд
29

Я видел комментарии в файлах INI, так что да. Пожалуйста, обратитесь к этой статье в Википедии . Я не смог найти официальную спецификацию, но это правильный синтаксис для комментариев, так как во многих файлах INI игр он был, насколько я помню.

редактировать

API возвращает значение и комментарий (забыл упомянуть об этом в моем ответе), просто создайте и пример файла INI и вызовите API для этого (с комментариями), и вы увидите, как это возвращается.

РазбойникПланетоид
источник
1
При использовании источников имеет смысл использовать наиболее авторитетный источник, а затем любые вспомогательные источники.
Майк Коллинз
1
Конечно, это хорошая идея - никогда не поздно указать на это - даже через семь лет
RoguePlanetoid
9

ИСПОЛЬЗУЙТЕ ПОЛУПОЛНИЦУ В НАЧАЛЕ ЛИНИИ --- >>; << ---

Ex.

; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.
Антуан Мельцхейм
источник
1

Да. Взгляните на Wikipedia и Cloanto «Реализация формата файла INI» (см. Внизу страницы).

Koekiebox
источник
9
Эм ... почему вы думаете, что это авторитетная спецификация для файлов INI?
reuben 05
Хотя реализация Cloanto может не быть официальной спецификацией, мне понравилось их объяснение.
Koekiebox