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