Другие языки программирования и технологии

Сохранение параметров программы

Пишу прогу, и ни как не могу определиться. Где лучше сохранять настройки программы? В *.ini файле (config.ini) или в реестре Windows?

Откуда быстрее считывать информацию из INI файла или из реестра?
Куда удобнее записывать?
ГЗ
Гена Зайцев
8 732
Не думаю, что есть разница в скорости - у вас ведь не Гб настроек.

А как будет использоваться ваша программа?

Если инсталлироваться, за деньги, без возможности распространения - в реестр.
Можете поставить ограничение по времени (в том числе с учетом перестановки даты) , пароли и т. п.
Но, по правилам хорошего тона, вы должны пердусмотреть удаление из реестра при деинсталляции.

Если свободно - лучше в ini. Оптимально вообще портабл.
Тем более, многие трепетно относятся к своему реестру.

Ну, а, на этапе разработки/тестирования, ИМХО, удобнее в ini: вы можете менять его в Блокноте
Алмас Сейтханов
Алмас Сейтханов
20 339
Лучший ответ
ini файлы считаются анахронизмом и использовать их не рекомендуется, в тоже время игры с реестром штука опасная. Если имеете достаточно опыта и знаний используйте реестр, если нет - ini-файл
Roman Chernoguzov
Roman Chernoguzov
68 014
Как варианты - использовать контейнер в xml- либо structured storage формате.
G 55-Spb
G 55-Spb
32 502
Пав Зах А что это даст? Чем xml лучше txt в ДАННОМ случае?
С таким же успехом можно какой-нибудь bin или dat или эюя собственого изготовления.

Как я понял, вопрос в другом:
- использовать общее хранилище - реестр
- или собственное - отдельный файл, в принципе, любого формата
Настройки - рекомендуется сохранять в реестре. Если данных много лучше сохранять в файлы.
Иван Егерь
Иван Егерь
17 142
Правильнее всего сохранять настройки в каталоге профиля пользователя. Это не противоречит модели безопасности Vista и Win7.

Я не знаю какие библиотеки применяете для программирования.
Например, в .NET Framework есть Application Settings позволяющий записывать значения и сохранять их между запусками программы.
Тут рассказано

Если у вас не .NET, в общем случае техника такая.
Создаёте класс Settings. В его конструкторе прописываете доступ к файлу настроек и чтение его содержимого.
Внутри класса объявляете словарь для доступа ко значениям. И перебрасываете в словарь все значения из файла.
Затем делаете индексатор для доступа к сохранённым строкам. Чтобы писать программу вида
Settings set = new Settings();
set["connStr"] = "dfdfd";
и
set[12] = "22222ввав";

Далее делаете у этого класса метод Save() сбрасывающий все изменения на диск.
Можно ещё сделать метод Refresh() для повторного чтения всех значений из файла в словарь.

Запись в файл удобно производить выполняя сериализацию объекта. А чтение - десериализацию.
Эти возможности поставляет тот же .NET Framework. Ищите нечто подобное в применяемом вами языке.

Нужна ли ручная работа с INI или XML файлом? Сложно сказать. Скорее всего НЕТ. Потому что у любой маломальски нормальной программы есть меню "Настройки" где можно поменять параметры не разбираясь в структуре файлов.
Женя Денисов
Женя Денисов
8 358
Алмас Сейтханов Извините за вторжение!
Я НЕ профессиональный программист, всего лишь любитель, зато с большим стажем.
Но мне смешны эти новомодные веяния.

Для чтения/сохранения в реестр достаточно API-функций RegOpenKey, RegSetValueEx, RegQueryValueEx, RegCloseKey, RegDeleteKey.
Для чтения/сохранения в ini - стандартных команд.

Зачем все так усложнять?
Это ведь не только трудно пишется/читается. Это ведь и работает в разы медленней!