Как работать с реестром?
Для начала основы реестра в рамках того, что нам надо знать, чтоб с ним работать. Если вы будете четко следовать инструкциям, предложенным здесь, то знайте, вы никогда ничего не испортите в своей ОС. Работа с реестром очень удобна в том плане, что если на одном компьютере будет создано несколько копий вашей разработки, то они смогут использовать общую информацию (при сохранении в файлы это очень тяжело осуществимо). Реестр состоит из ключей (папок), каждый из которых содержит в себе набор строк. Скорее всего вам придется в рамках одного приложения работать не больше чем с одним ключом, а потому рекомендую в начале программы задать его имя в константу, например:
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);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.