Допускаются ли комментарии в стандартных файлах .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


1

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


9
Эм ... почему вы думаете, что это авторитетная спецификация для файлов INI?
— reuben 05

Хотя реализация Cloanto может не быть официальной спецификацией, мне понравилось их объяснение.
— Koekiebox
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.