Как работать с реестром?

Страницы работы

Содержание работы

Как работать с реестром?

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

const char *RegKey = "Software\\Borland\\MyKey";

Обратите внимание, что вместо символа \ используется \\. Теперь нам предстоит создать, открыть ключ и прочитать необходимую информацию:

<00> TRegistry *reg = new TRegistry; // Создаем объект reg

<01> if (!reg->OpenKey (RegKey, false))

<02> {// Если ключ не найден (при первом запуске программы его обычно еще не существует)

<03>  reg->OpenKey (RegKey, true); // Создаем ключ

<04>  // Здесь пишем начальную информацию.

<05>  // Например, если нам надо сохранять в реестре координаты экрана, то

<06>  // запишем пока координаты, при которых окно будет на середине

<07>  reg->WriteString ("Left", IntToStr (Left/2-Width/2));

<08>  reg->WriteString ("Top", IntToStr (Top/2-Height/2));

<09>  reg->WriteString ("Width", IntToStr (Width));

<10>  reg->WriteString ("Height", IntToStr (Height));

<11> }

<12> // Теперь в любом случае ключ открыт (читай комментарии после кода)

<13> // Просто читаем информацию. В нашем примере это будет так:

<14> Left = StrToInt (reg->ReadString ("Left"));

<15> Top = StrToInt (reg->ReadString ("Top"));

<16> Width = StrToInt (reg->ReadString ("Width"));

<17> Height = StrToInt (reg->ReadString ("Height"));

<18> delete reg;

Итак, что мы имеем. Функция OpenKey открывает ключ к последующему чтению/записи. Последний передаваемый параметр говорит о том, стоит ли создавать ключ, если его нет. Наш пример делает примерно следующее: сначала мы пытаемся открыть ключ, не создавая его (строка 01). Тогда, если он есть, то он откроется и мы начнем считывать его (строки 14-17). Если же его нет, то функция вернет false и мы попадаем в тело цикла, где создаем ключ (строка 03), после чего записываем в него значения по умолчанию (строки 7-10). Процедура WriteString имеет два параметра: первый - это имя строки в ключе, второй - это значение, которое следует записать в эту строку. Функция ReadString имеет один параметр: имя строки, из которой предстоит произвести чтение. Возвращает функция значение этой строки. И не в коем случае нельзя забыть вычеркнуть reg (строка 18). Теперь, когда настанет время записать в реестр информацию (в нашем случае это, надо полагать, момент закрытия формы), мы просто окрываем вновь ключ и пишем в него. Выглядит это примерно так:

<00> TRegistry *reg = new TRegistry; // Создаем объект reg

<01> reg->OpenKey (RegKey, true);

<02> reg->WriteString ("Left", Left);

<03> reg->WriteString ("Top", Top);

<04> reg->WriteString ("Width", Width);

<05> reg->WriteString ("Height", Height);

<06> delete reg;

Осталось упомянуть последнюю деталь: когда вашу программу будут удалять надо позаботиться об очистке за собой реестра:

<00> TRegistry *reg = new TRegistry; // Создаем объект reg

<01> reg->DeleteKey (RegKey);

Похожие материалы

Информация о работе