Чи дозволяють стандартні файли .ini для Windows дозволити коментарі?


91

Чи дозволяються коментарі у файлах ini Windows? (... припускаючи, що ви використовуєте GetPrivateProfileString функції api для їх читання ...)

[Section]
Name=Value   ; comment

; full line comment

І, чи є де-небудь правильна специфікація формату файлу .INI?

Дякую за відповіді - Однак, можливо, я був недостатньо чітким. Мене цікавить лише формат , який читають дзвінки API Windows . Я знаю, що інші реалізації дозволяють коментувати, але саме специфікація та реалізація MS Windows мені потрібні.


1
API повертає значення та коментар, вам просто потрібно шукати SemiColon і прочитати або видалити це при зустрічі, використовуючи регулярний вираз, або просто шукати;
RoguePlanetoid

7
@RoguePlanetoid Регулярний вираз, щоб знайти ;персонажа? Серйозно !?
IIНевидимий

1
@IInspectable Може використовувати регулярний вираз для читання коментаря, щоб витягти елемент після крапки з комою, або, як я вже згадував у своєму коментарі, або шукати; даючи альтернативу витягувати сам коментар або шукати присутність одного, я вважав, що мій коментар додав цінності, просто
перевіряючи, чи є точка з

Відповіді:


95

Підтримка 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

8

ВИКОРИСТОВУЙТЕ НАПОВІ КОЛОНИ НА ПОЧАТКУ РЯДКА --- >>; << ---

Напр.

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

1

Так. Погляньте на Wikipedia та Cloanto Впровадження формату файлу INI (див. Нижню частину сторінки).


9
Гм ... що змушує вас думати, що це авторитетна специфікація файлів INI?
reuben

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