Страница 1 из 1

Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 18:12:15
Nik
Собственно, есть сабж (см. вложение). Много лет использовал его в Delphi и теперь продолжаю использовать в Lazarus. Но в связи с необходимостью в будущем обеспечить кросс-платформенность одной из программ стал проверять все модули на предмет возможных проблем вполне ожидаемо обнаружил, что для работы с ini используются функции kernel32.dll (GetProfileString и т.п.).

Вопрос к знатокам: можно ли как-то сделать функции из приложенного модуля кросс-платформенными малой кровью (парсить файлы вручную, конечно, можно, но...)?

PS. Ну и все желающие могут с чистой совестью юзать модуль - мне не жалко :) Сам в своё время собрал его из разных источников (помню только, что большую часть функций взял из исходников Inno Setup :) )

Re: Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 18:33:00
Bupyc
Чем модуль IniFiles не подошёл?

P.S. По секрету скажу, что он кросс-платформенный. Только об этом никому :)

Re: Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 18:43:18
Nik
Отдельные функции, имхо, удобнее. Особенно если работа с ini-файлом идёт из разных кусков программы, а обращения - единичные. Создавать глобальный TiniFile в этом случае нелогично (лишняя память), а создавать его каждый раз - вообще извращение.

Хотя попробовать вытащить из модуля IniFiles только нужные функции - это идея, если других предложений не будет, попробую :)

Re: Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 20:58:28
hinst
советую TXmlConfig. Поначалу тоже много лет пользовался ини-файлами, а потом перешёл на него

Re: Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 21:28:31
Nik
Пользовался чем-то похожим в Delphi, но - не прижилось. Неудобно править вручную :) К тому же иногда приходится работать с чужими ini-файлами, так что XML вообще не вариант.

Re: Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 22:35:10
Odyssey
Имхо, когда идут единичные обращения к ini-файлу из разных кусков программы -- это хороший повод для рефакторинга. Во-первых, так сложнее менять формат и источник настроек, во-вторых файл постоянно открывается/парсится/закрывается. Можно было бы читать настройки сразу в запись/объект/группу переменных, а потом уже обращаться к этим переменным. Но это так, не более чем имхо.

Re: Модуль для работы с ini-файлами

СообщениеДобавлено: 09.07.2010 23:18:19
Nik
Odyssey
Ну, во-первых, настройки имеют свойство изменяться в разных местах программы (я терпеть не могу кнопку "Применить" в диалоге опций и считаю, что все настройки должны вступать в силу сразу же после тычка по чекбокусу, выбору из списка и т.п.). А во-вторых, ini-файлы удобны не только для хранения настроек (хотя это дело вкуса) :)