Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700269.doc
Скачиваний:
15
Добавлен:
01.05.2022
Размер:
1.78 Mб
Скачать

5.6. Средства управления конфигурацией

Задачи управления конфигурацией, т.е. начальная инициализация или настройки проектируемого приложения изначально (в 16-разрядных версиях Windows 3.x) решались с помощью текстовых INI-файлов. Работу с такими файлами проще всего осуществлять с помощью создания в приложении объекта типа TIniFile.

В них сохраняемая информация о различных настройках логически группируется в разделы, каждый из которых начинается оператором заголовка, заключенным в квадратные скобки (например, [Desktop]). В строках, следующих за заголовком, содержится информация, относящаяся к данному разделу, в форме: <ключ>=<значение> или <keyname>=<value>.

Начиная с Windows 95, использование INI-файлов не рекомендовано и вместо типа TIniFile, инкапсулирующего свойства подобных файлов, используются типы TRegistry, TRegIniFile и TRegistryIniFile, инкапсулирующие свойства системного реестра (registry).

Реестр – это база данных для хранения информации о системной конфигурации аппаратуры, о Windows и о приложениях Windows. Реестр имеет иерархическую организацию, которая содержит много уровней ключей, субключей и параметров. В реестре данные делятся на две категории: характеризующие компьютер и характеризующие пользователя. Характеристики компьютера включают в себя все, связанное с техническими средствами, а также с установленными приложениями и их конфигурацией. Характеристики пользователя включают в себя установки по умолчанию для экрана, пользовательские конфигурации, информацию о выбранных пользователем принтерах, установки сети и т.д.

Шесть основных ключей реестра содержат все субключи и записи низшего уровня. Четыре ключа верхнего уровня предназначены для характеристик компьютера:

  • Hkey_Local_Machine – информация о компьютере, включая конфигурацию установленной аппаратуры и программного обеспечения;

  • Hkey_Current_Config – информация о текущем оборудовании;

  • Hkey_Dyn_Data – динамические данные о состоянии, используемые процедурами plug-and-play;

  • Hkey_Classes_Root – информация об OLE, drag&drop, клавишах быстрого доступа и пользовательском интерфейсе.

Два ключа верхнего уровня, предназначенные для характеристик пользователя:

  • Hkey_Users – информация о пользователях, включая установки экрана и приложений;

  • Hkey_Current_User – информация о пользователе, зарегистрированном в данный момент.

Реестр хранится в файле SYSTEM.DAT в каталоге Windows. Просмотр и редактирование реестра осуществляется стандартным в Windows редактором реестра REGEDIT.EXE.

Хотя разработчики Windows и не рекомендуют использование INI-файлов, тем не менее их логически естественная структура и доступность для редактирования в любом текстовом редакторе предопределили их предпочтительность по сравнению с использованием реестра, особенно для прикладных программных средств. Отметим, что логическая организация INI-файлов подходит и для хранения расчетных данных.

Когда в приложении создается объект типа TIniFile, ему передается как FileName (и это единственное свойство данного класса) имя файла, с которым он связан, причем расширение может быть любым. Методы TIniFile позволяют читать информацию из файла, записывать, удалять разделы и т.п.

Например, оператор создания объекта Ini типа TIniFile и связывания его с файлом MyConfig.cfg, находящемся в одном каталоге с проектируемым программным обеспечением, имеет следующий вид.

var Ini:TIniFile;

...

Ini:=TIniFile.Create('MyConfig.cfg');

Следующий оператор проверяет наличие в файле раздела My Section, содержащего ключ MyKey.

if Ini.ValueExists('My Section','MyKey') then ...

Следующий оператор заносит в ключ MyKey раздела My Section значение '5'.

Ini.WriteInteger('My Section','MyKey',5);

Следующий оператор удаляет ключ MyKey раздела My Section.

Ini.DeleteKey('My Section','MyKey');

Следующие операторы сохраняют содержимое объекта Ini в файле на диске и разрушают объект Ini.

Ini.UpdateFile;

Ini.Free;

Вместо класса TINIFile возможно применение объектов типа TStringList, близких по возможностям.