C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Сохранение и восстановление настроек, ini-файлы, реестр...
BreakPointMAN
Отправлено: 28.07.2005, 19:58


Станционный диспетчер

Группа: Участник
Сообщений: 86



Всем привет и доброго времени суток!
Возник у меня ряд вопросов касательно работы с реестром и ini-файлами. Если кто-нибудь подскажет, буду весьма признателен за любую помощь. А вопросы такие:

1) Что предпочтительнее использовать: ini-файлы или реестр? В каких случаях?

2) Мммм... вопрос, связанный с запуском программы под Администратором и обычными пользователями. Допустим, программа будет работать с реестром и, возможно, помимо этого, придется создавать ini-файлы в системной папке Windows. Ну, Администратору, наверное, открыты и все ветви/ключи реестра, и все файлы... А что делать, если программа будет запущена под пользователем с меньшими привилегиями? Что ему разрешено читать/модифицировать, а что запрещено? Можно ли это как-то обойти?

3) Есть ли более простой способ сохранения информации о конфигурации программы (такой, как используемые шрифты, местоположение и размеры форм и т.п.), нежели цикл по всем контролам с запросом их свойств и последующим сохранением в реестр/файл? (...скажем, при использовании ActionManager для сохранения конфигурации полос действий можно просто задать св-во FileName...)

4) ...иии... вообще, как лучше хранить информацию о настройках в самом приложении? Для каждого отдельного параметра вводить свою переменную нужного типа, и ей манипулировать? Или (если модальная форма настроек не уничтожается, а просто хайдится) проще читать/менять свойства чекбоксов и т.п.?
** Harold
Отправлено: 28.07.2005, 22:27


Не зарегистрирован







п.1
Я в ини-файле храню, но мне надо, чтобы пользователь мог параметры проги изменять изредка. В ини-файле это очень наглядно — пары параметр=значение, логически сгрупированные по [секциям] со значащими именами, воспринимается неплохо. Читать/писать ини-файл легко...
все сказанное IMHO пользователя, иногда вымучивающего поделки, применяемые другими пользователями. Народу нравится...
Rius
Отправлено: 29.07.2005, 03:36


Мастер участка

Группа: Участник
Сообщений: 321



1.У меня в XML файле, работать очень легко, имеется наглядная иерархия группировки данных.

2.Часть реестра доступна обычному пользователю. Если это запрещено админом, то не судьба...

3.В принципе найстройки формы можно сохранить в dfm-Файл (WriteComponent), только вот как потом загружать...
А ActionManager не бегает по всем своим дочерним компонентам?
Vlad
Отправлено: 29.07.2005, 08:11


Машинист паровоза

Группа: Участник
Сообщений: 231



Работа через реестр, значительнее гибче, но
1. Если мало параметров -можно и в ini
Недостаток ini -пользователь может видеть, изменять, а отдельные тупые юзвери могут и стереть файлик, этих недостатков лишина запись в реест. По мимо всего, можно сделать при установки сразу ассоциацию вашего приложения, с каким либо файлом или еще что.
2. Запускать приложение можно и под админом и под пользователем, если разрешено запускать, прога будет все равно читать из реестра. Здесь опасения напрасны.
3. Вообщето все параметры (которые вы сохраняете) можно разбить на разделы, создать разделы в реесте и сохранять. Тем более реестр позволяет создать древовидную структуру параметров. А сохранять параметры в самом приложении — ну это просто извращение.
В каждом отдельном случае кол-во переменных для параметров индивидуально. Зачем спрашивается создавать переменную шрифт — можно и без переменной обойтись, что бы сосчитать и записать в файл конфигурации ( я не имею ввиду локальную переменную если она используется в этих операциях)
CODE
Или (если модальная форма настроек не уничтожается, а просто хайдится) проще читать/менять свойства чекбоксов и т.п.?

И зачем её хайдить. Как правило окно настроек очень редко используется, так что лучше создал, установил параметры, и грохнул это окно.
Не достаток реестра на мой взгляд, что тяжело установить прогу с одного пользовательского компа на другой, не использую инсталятор программы. Проще говоря скопировать папку с прогой на другой комп, может не дать результат.( опять же в каждом конкретном случае по разному). С ini файлом или xml -проще, особенно если необходимые файлы приложения лежат в одной директории.
AVC
Отправлено: 29.07.2005, 08:12


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

1. ini-файлы или реестр

Храню в ini в каталоге приложения. Позволяет разные настройки для разных копий пронраммы.

QUOTE

2. что делать, если программа будет запущена под пользователем с меньшими привилегиями?

Продумать стратегию доступа. На этом можно сыграть, например, выключая разные модули.

QUOTE

3. Есть ли более простой способ сохранения информации о конфигурации программы (такой, как используемые шрифты, местоположение и размеры форм и т.п.), нежели цикл по всем контролам

Я использую понятие "стиль" и храню только описание стиля. При старте формы прохожу по всем контролам и применяю параметры стиля к каждому из них + правильно раставленные значения ParentFont и ParenColor.

QUOTE

4. как лучше хранить информацию о настройках в самом приложении?

Как удобнее по логике программы для редактирования и использования.
olegenty
Отправлено: 29.07.2005, 09:46


Ветеран

Группа: Модератор
Сообщений: 2412



Поскольку пишу в основном приложения для работы с БД, то склоняюсь к тому, что и настройки хранить прямо там — вполне нормально. Единственные 2 параметра, которые выносятся в реестр — строка соединения с БД и последний логин, под которым заходили... они сохраняются в ветке HKCU, так что с доступом туда проблем не возникает.
avc*
Отправлено: 29.07.2005, 09:58


Не зарегистрирован







Параметры, характерные для машины (размеры форм, шрифты, цвета) храню как я писал.
А параметры, характерные для клиента (последние ответы, любимые функции и т.д.) храню в таблице БД.
olegenty
Отправлено: 29.07.2005, 10:05


Ветеран

Группа: Модератор
Сообщений: 2412



Тут фокус в том, что размеры форм я не храню. Равно как и шрифты... Если встанет такая задача, то ещё подумаю, где именно хранить. Но, скорее всего, всё же в БД, с привязкой к пользователю + имя компа.
avc*
Отправлено: 29.07.2005, 10:41


Не зарегистрирован







Шрифты храню — есть любитель БАЛЬШИХ букв. smile.gif А положения и размеры форм — самому удобно.

Вернуться в Вопросы программирования в C++Builder