Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реестр. Как избежать ошибки? 
:(
    Опции темы
Death
Дата 10.7.2002, 14:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте.
У меня при загрузке программы читаються некоторые значения из реестра. Если значение не соответствует нужному, выводится ошибка - Invalid data type for 'NoDriveTypeAutoRun'. Это возникает, например, если значение должно быть двоичным, а на его месте такой же параметр, но со строковым значением. Помогите избежать ошибки!

//Чтение
procedure ReadData;
var
buf:Dword;
Reg:TRegistry;
begin
Reg:=TRegistry.Create;
 Reg.RootKey:=HKEY_CURRENT_USER;
  Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer',False);

if Reg.ValueExists('NoDriveTypeAutoRun') then
 begin
  Reg.ReadBinaryData('NoDriveTypeAutoRun',buf,sizeof(buf));
  if buf=0 then
   Form1.Checkbox11.Checked:=true
  else
   Form1.Checkbox11.Checked:=false;
 end;

 Reg.CloseKey;
Reg.Free;
end;
  Вверх
AntonSaburov
Дата 10.7.2002, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Обычно для обработки ошибок
используют блок. RTFM

try
...
except
...
PM MAIL WWW ICQ   Вверх
Death
Дата 14.7.2002, 16:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо! try...  ...except - то, что надо.

Но уменя появился еще один вопрос:
Если в моей функции много открытий ключа реестра и закрытий, как быть в таком случае? То есть:

Код
procedure ReadData;
var
 buf:Dword;
 Reg:TRegistry;
begin
Reg:=TRegistry.Create;
 Reg.RootKey:=HKEY_CURRENT_USER;
  Reg.OpenKey('Ключ1',False);
  ............
  Reg.CloseKey;


  Reg.RootKey:=HKEY_USERS;
  Reg.OpenKey('Ключ2',False);
  ............
  Reg.CloseKey;

Reg.Free;
end;

  Вверх
Song
Дата 14.7.2002, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



И что Вам не нравится в Вашем коде?


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Death
Дата 14.7.2002, 19:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
У меня при загрузке программы читаються некоторые значения из реестра. Если значение не соответствует нужному, выводится ошибка - Invalid data type for 'NoDriveTypeAutoRun'. Это возникает, например, если значение должно быть двоичным, а на его месте такой же параметр, но со строковым значением. Помогите избежать ошибки!


Посоветовали try...  ...except. А если много открытый и закрытый ключа, как распологать try...  ...except?
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.