Меню

Delphi где хранить настройки



Delphi где хранить настройки

Наконец-то я перешел на новую работу, но столкнулся с небольшим неудобством. На пердыдущей работе я настраивал IDE Delphi 7 под себя, с выделением цветом зарезервированых слов и т.д. и т.п. На новой работе установил Delphi, естественно этих настроек нет:0)). Конечно это не смертельно, но все-таки. Подскажите, где хранятся все эти настройки, если это файл, то мне его с прошлой работы пришлют.


Reindeer Moss Eater © ( 2006-08-30 11:46 ) [1]

Это конечно же файл. Только файл реестра


pavel_guzhanov © ( 2006-08-30 11:51 ) [2]

а поконкретнее, где там искать?


Reindeer Moss Eater © ( 2006-08-30 11:53 ) [3]

А тебе не все равно где искать?
Реестр-то один.
И F3 одна.


Сергей М. © ( 2006-08-30 12:01 ) [4]

Источник

Как хранить настройки программ

Примечание. Все упоминаемые в статье модули, функции и т.п. относятся к Delphi.

Нижеприведенный текст являет собой вольное изложение отдельных статей февральского выпуска Microsoft Platform SDK. Год 2001 от рождества Христова. При проектировании способов хранения настроек своей программы следует задаться тремя вопросами:

Что хранить

Поскольку первая часть вопроса нам известна по определению, т.е. хранить мы будем настройки программы, то перейдем ко второй части вопроса. Ваша программа устанавливается на КОМПЬЮТЕР а пользуются ей ПОЛЬЗОВАТЕЛИ. Соответственно все настройки разделяются на две части а то и на все три — настройки которые относятся к компьютеру в целом, настройки которые относятся ко всем локальным пользователям, настройки которые относятся к конкретному пользовател. В зависимости от специфики программы первая и вторая часть могут быть совмещены или разделены. Поэтому важно сделать логическое разделение — какие настройки вашей программы действительно специфичны для самого ПК, какие настройки должны прилагаться ко всем пользователям, какие должны прилагаться к конкретному пользователю. Кроме того Мокрософт рекомендует чтобы настройки учитывали возможную мобильность пользователя, т.е. для пользователя находящегося в разных местах, возможно потребуется иметь разные наборы настроек.

Где хранить

Вообще в голову приходят три вещи.

  • Хранить настройки в системном реестре.
  • Хранить настройки в каталоге куда установлена программа.
  • Хранить настройки в системном каталоге Windows.
  • Хранить настройка в домашнем каталоге пользователя.

В Windows имеется три места предназначенных для хранения настроек которыми и следует пользоваться.

  • Системный реестр.
  • Домашний каталог пользователя (точнее один из его подкаталогов).
  • Общий каталог для пользователей.

Прочие мысли о местах хранения настроек должны быть выброшены из голов как вредные и противоестественные, Microsoft уже за вас все придумала и нефиг извращаться. Для тех кто не понимает почему, объясняю. На нормальной ОС (W’NT, W’2K) программа обычно запускается от имени и с правами конкретного пользователя. Обычно, если этот пользователь не является администратором, он имеет право изменять содержимое следующих ресурсов:

  • часть реестра HKEY_CURRENT_USER\*
  • содержимое своего домашнего каталога.
  • содержимое временного каталога (который как правило находится внутри домашнего).
  • содержимое некого каталога или каталогов специально выделенного для этого администратором.
Читайте также:  Ручная настройка ресивера 8304

При нормальном (читайте параноидальном) администрировании системы прочие места либо доступны только в режиме чтения, либо вообще недоступны. В том числе и папки \Program Files и Windows. Посему любая попытка программы изменять любые файловые ресурсы окромя вышеуказанных черевата тем что ее (программу) и его (пользователя) пошлют подальше. Причем далеко не в самой вежливой форме.
Пример. Adobe Photoshop и его разработчики наивно полагают что им должны быть выданы эксклюзивные права мусорить своими scratch-файлами в корневых каталогах дисков, кроме того они полагают что им должна быть выдана в пользование в режиме полный доступ часть системного реестра.. Временных каталогов, специально выделенных для подобоного рода занятий, их не устраивает. Как результат — Photoshop имеет серьезные проблемы с работой под Windows NT/2000.

С точки зрения хранения настроек программы системный реестр разделен на две части. Это ветви HKEY_CURRENT_USER для хранения настроек специфичных для пользователя, и HKEY_LOCAL_MACHINE для хранения настроек специфичных для всего ПК и соответственно всех пользователей, работающих с этим ПК. Рекомендуемая структура ветвей для хранения настроек программы — HKEY_CURRENT_USER\Software\Company Name\Application Name\Version и соответственно HKEY_LOCAL_MACHINE\Software\Company Name\Application Name\Version. Параметры Company Name, Application Name, Version желательно не хранить в виде hard-coded строк в коде программы а устанавливать в опциях проекта (Project\Options\Version Info) и доставать впоследствии из ресурса с помощью той же библиотеки RxLib. Альтернативный путь выбирать данные о версии программы из ресурсов — использование Windows API (GetFileVersionInfo, GetFileVersionInfoSize, VerQueryValue). Программе следует расчитывать на то что доступ к подключам HKEY_LOCAL_MACHINE разрешен в режиме только для чтения, а доступ к подключам HKEY_CURRENT_USER допускает чтение, изменение и создание новых подключей и значений. Программе следует расчитывать на то что нужных ей ключей может не оказаться в реестре или значения лежащие в реестре имеют неверный формат или недопустимые значения. В таком случае, вместо несуществующих или неверных значений настройки, программа должна использовать значения по умолчанию которые разработчик может «железно забить в код» или получить с помощью различных системных функций. Не следует использовать системный реестр для хранения больших кусков данных. Вместо этого лучше хранить объемные данные в отдельном файле, а в реестре запомнить имя этого файла.

Домашний каталог пользователя

Для хранения настроек слишком больших для того чтобы их размещать в реестре существуют специально выделенные каталоги внутри домашнего каталога пользователя. Эти каталоги обычно называются «специальными каталогами» и имеют имена Application Data и Local Settings. Полный путь к ним можно получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Общий каталог пользователей

Обычно это каталог «Documents and Settings\All users». Внутри него имеются такие-же подкаталоги для хранения настроек и данных программ но относящихся ко всем пользователям. Полный путь к ним можно также получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Как хранить

Для работы с системным реестром можно использовать функции Registry API общим числом около 40 штук, а можно использовать классы из Registry.pas — TRegistry, TRegistryIniFile, TRegIniFile. Особенно следует обратить внимание на TRegistryIniFile который предоставляет упрощенную модель доступа к системному реестру очень схожую с моделью работы с INI-файлами.

Читайте также:  Настройка звука на леново 536

Это старый метод хранения настроек программ, но все еще применяющийся программистами. Настройки хранятся в текстовом файле в виде:

Для доступа к данным содержащимся в INI-файлах существуют классы из модуля IniFiles — TIniFile, TMemIniFile. Преимущество использования INI-файлов состоит в том что их можно легко подредактировать с помощью текстового редактора. Они обычно легче воспринимаются для прочтения нежели дерево ключей системного реестра.

Бинарные файлы настроек

Отдельно хочется поговорить о использовании бинарных файлов в качестве хранилища для настроек программы. Обычные мотивы любителей использовать бинарные файлы:

  • Экономится место.
  • Настройку можно спрятать от пользователя (сделать нечитабельной).

Первое глупо потому что информация о настройке занимает обычно немного места и экономия достигается мизерная. Второе глупо потому что невозможность просмотра и редактирования настроечных данных простыми средствами (текстовый редактор) или встроенными (редактор реестра) создает больше проблем как пользователю так разработчику, нежели пользы (причем весьма сомнительной) от того что кто-то не сможет прочитать что написано в файле. Кроме того использование бинарного файла нельзя назвать защитой от нежелательного просмотра, т.к. любой «продвинутый пользователь» все равно с помощью редактора бинарных файлов сможет просмотреть и разобраться в содержимом настройки.

Заключение

Почти вся эта информация была вычерпана из кладезя мудрости под названием Platform SDK (Software Development Kit), поставляемого в составе сборника документации MSDN (Microsoft Software Developer Network). Разработчикам настоятельно рекомендуется приобрести Platform SDK, это снимает огромную массу вопросов связанную с программированием под Windows.

Источник

В чем хранить настройки программы

В чём правильно хранить настройки динамически созданных компонентов
Нужно запомнить такую структуру . Есть не ограниченное количества панелей они могут добавляться .

Где хранить настройки программы
Собственно, вопрос в названии. Пишу программу, в которой много настроек, как зашифрованных, так и.

Можно ли хранить настройки программы в облаке?
Я хочу иметь возможность удаленно настраивать программу. Есть какие нибудь варианты? Например.

Как хранить файл настройки в ресурсах программы?
Есть программа. Для нее есть .xml файл. Из которых берутся все необходимые настройки. Этот.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Где хранить настройки программы (свойства формы и её компонентов)
Уважаемые, мне необходимо где-то хранить настройки программы (например, если пользователь не хочет.

Как заставить Total Commander хранить настройки в папке программы?
Сейчас настройки ххранятся в c:\Users\Иван\AppData\Roaming\GHISLER\WINCMD.INI Надо чтобы они в.

Как хранить настройки?
Есть программа и редактор к этой программе, из программы должен запускаться редактор, а из.

Как удобнее хранить настройки?
У меня есть приложение, в котором около десятка классов и в каждом нужно некоторые вещи считывать.

Где лучше хранить настройки?
Мне нужно сохранить в основном цвета. Допустим я задел цвет линиям красный, фон черный и так далее.

Читайте также:  Спутник экспресс настройка тарелки

Можно ли хранить настройки внутри *.ехе
Если кто может накидайте пример записи (ну и чтения) некой инфы в ехе. Спрашивать зачем ненадо. Ну.

Источник

Delphi

Наши проекты

Урок 11 — Сохраняем настройки программы

Автор:

Практически у любой программы есть параметры которые нужно сохранять при закрытии программы и при следующем запуске загружать. Примером такой программы может быть стандартные программы Блокнот, Paint и многие другие. Например при закрытии прогрммы «Блокнот» сохраняется положение координаты окна программы, его размеры и другие настройки.

Как все это реализовать? Есть несколько вариантов. Можно создать файл в той же папке что и сама программа. Но тут придется реализовывать обработку на то, что программа может быть запущена не с HDD а, например, с CD. Что приведет к ошибке, так как создать файл на CD программа не сможет. Вторым вариантом является сохранение данных в реестре. Тут уже есть масса приемуществ. Не будет никаких ошибок с записью, если файл запускается с CD и так далее.

Итак, будем сохранять настройки программы в реестре. Теперь нужно определиться с тем, что же программа должна сохранять. В качестве примера сделаем сохранение положения окна и его размеры.

Приступим. Создайте новый проект. Добавьте модуль Registry в секцию Uses. Объявите глобальную переменную:

С ее помощю будем осуществлять доступ к реестру. Далее приступим к написанию процедуры сохранения (начнем именно с сохранения, так как загружать еще нечего):

Разберем, что тут написано и почему именно так. Ну первая строчка «Reg:=TRegistry.Create» это создание переменной. Последняя — освобождение. Далее указываем одну из ветвей. OpenKey — открытие указаной ветви. True — означает, что если такой ветви не существует, то она будет создана. Если бы стоял False и открываемой ветви не существовало бы, то функция бы возвратила ошибку. WriteInteger — это запись ключа реестра. Первый параметр — его имя, второй — значение.

Осталось вызвать вышенаписаную процедуру. Создаем событие формы onFormClose. Оно произойдет при закрытии формы (не обязательно на кнопку закрыть). После создания вызываем процедуру. В будет так:

Далее запускаем программу изменяем положение и закрываем. Открываем редактор реестра и проверяем (для открытия делаем: Пуск -> Выполнить -> Regedit). Теперь нужно написать процедуру загрузки этих параметров:

Тут все тоже самое, что при сохранении, но с некоторыми отличиями. ValueExists возвращает True если ключ с указанным именем в качестве параметра существует, иначе возвратит False. Это сделано для того, чтобы предотвратить ошибку если ключа не существует. Так как программа будет пытаться загрузить ключ которого нету.

Осталось только вызвать процедуру LoadSettings. Вызывать будем в событии формы onCreate:

Запускаем программу и тестируем. Аналогично можно сохранять абсолютно любые настройки. Если нужно сохранить строку (например путь к чему-либо), то вместо WriteInteger используем WriteString, а вместо ReadInteger используем ReadString.

Обсудить на форуме

Источник

Adblock
detector