пятница, 16 июля 2010 г.

Понимание устройства INI-файлов

Разрабатывая приложения,довольно часто сталкиваюсь с вопросом хранения настроек и конфигурирования работы приложения. Этот вопрос и стал причиной разработки класса по парсингу Ini-файла, пока мне хватает и на чтение.

При изучении строения ини-файла столкнулся с тем что каждая тулза работает по своему и четкого стандарта нет! Одни программисты привыкли к одним решениям, другие к другим.

Строение:
1) Могут иметься глобальные параметры, это параметры не принадлежащие какой-либо секции, т.е. описаны до первой секции
2) Секции определяются названием заключенным в квадратные скобки и их значением, состоящим из параметров и их значений
3) Параметры задаются именем и значением. Значение и имя разделяется символом '='
4) Значения могут быть очень большими и тогда очень удобно внедрить поддержку символа '\' означающего перенос на новую строку
5) Также для удобства сопровождения файлов существуют коментарии, как правило, это символы ';', '#'
6) Может возникнуть ситуация, когда символы относящиеся к специальным ';', '#', '\' нужно включить поддержку ковычек. Другими словами, если значение начинается с ковычек, то считать значением все пока не найдена закрывающая, т.е. самая последняя, после которой только пробелы, табуляци или конец строки, ну или пока не закончилась строка

Какие могут быть нюансы?

1) В файле могут быть две секции с одинаковыми названиями?
2) Стоит ли обрамлять в ковычки каждую новую перенесенную строку в ковычки?

Рекомендуемые ссылки:
1) ".ini"
2) "Cloanto Implementation of INI File Format"

2 комментария:

Анонимный комментирует...

что там понимать? ^_______^
мне например счас больше попадается малвари с xml конфигами =)

The NT Visigoth комментирует...

Не все! К примеру TDSS в некоторой части имел ини-файл ) Да и XML сложнее парсить, чем ини-файл