Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

исключение не ловится :(   Найти похожие ветки 

 
Alexis ©   (2003-12-25 18:53) [0]

Допустим, в ключе HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer значение "NoDrives" Reg_Binary, а не Reg_Dword, как обычно.Мне надо прочесть из него значение, используя обработку исключения.
Вот код:

procedure TForm1.Button1Click(Sender: TObject);
var r:TRegistry;k:integer;
begin
r:=TRegistry.Create;
r.RootKey:=HKey_Current_User;
r.OpenKey("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",false);
try
k:=r.ReadInteger("NoDrives");
showmessage("NoDrives value= "+inttostr(k));
except on ERegistryException do
showmessage("NoDrives contains not integer value");
end;

end;

Что не так? При запуске showmessage не срабатывает, все-равно вылазит исключение ERegistryException, но ведь я его обрабатываю!

Благодарю.


 
Тимохов ©   (2003-12-25 19:02) [1]

Ты пройдись отладчиком и удостоверься, что исключение происходит именно на строке k:=r.ReadInteger("NoDrives");, а не раньше.


 
Alexis ©   (2003-12-25 19:24) [2]

Именно на этой! Может надо в Classes описание исключения добавить?


 
panov ©   (2003-12-25 19:32) [3]

При запуске showmessage не срабатывает

Который showmessage?


 
Тимохов ©   (2003-12-25 19:35) [4]

Я не поленился - проверил, этот код отрабатывает у меня как надо. У тебя ошибка не в этом try except, а где-то еще. Где? Ищи.


 
Alexis ©   (2003-12-25 19:39) [5]

У тебя в разделе Uses все стандартное, дополнительных модулей не используешь?

2panov-ни тот, ни другой


 
Юрий Зотов ©   (2003-12-25 19:44) [6]

> Alexis

Запускаете программу из-под Delphi или автономно?


 
Тимохов ©   (2003-12-25 19:45) [7]

Не использую.
Еще может быть ошибка в том (хотя я совсем не уверен), что у тебя есть другой класс ERegistryException и именно он имеется здесь в виду.


 
Alexis ©   (2003-12-25 19:50) [8]

И как же отловить это исключение?

2Юрий Зотов-и так, и так фигня получается-оба раза Error.


 
Тимохов ©   (2003-12-25 19:59) [9]

Напиши просто

except
showmessage("NoDrives contains not integer value");
end;

будет в этом случае видно сообщение "NoDrives contains not integer value"?


 
Alexis ©   (2003-12-25 20:19) [10]

Вообще не компилирует.

procedure TForm1.Button1Click(Sender: TObject);
var r:TRegistry;k:integer;
begin
r:=TRegistry.Create;
r.RootKey:=HKey_Current_User;
r.OpenKey("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",false);
k:=r.ReadInteger("Nodrives");
showmessage("NoDrives contains "+inttostr(k));
except (ошибка тут)
showmessage("Nodrives is not integer type data!");
end;

end;

END expected but EXCEPT found


 
Тимохов ©   (2003-12-25 20:26) [11]

try где?


 
Юрий Зотов ©   (2003-12-25 20:28) [12]

И что-то Free тоже не видно.


 
Alexis ©   (2003-12-25 20:37) [13]

Исправил. Но один фиг не обрабатывает исключения:

procedure TForm1.Button1Click(Sender: TObject);
var r:TRegistry;k:integer;
begin
r:=TRegistry.Create;
r.RootKey:=HKey_Current_User;
r.OpenKey("Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",false);
try
k:=r.ReadInteger("Nodrives");
showmessage("NoDrives contains "+inttostr(k));
except
showmessage("Nodrives is not integer type data!");
end;

end;

Помогите, plz...


 
Zelius ©   (2003-12-25 20:45) [14]

попробуй запустить программу не из под дельфов или убрать галку "stop on delphi exceptions"


 
Alexis ©   (2003-12-25 21:00) [15]

2Zelius - спасибо, все нормально работает.Но при запуске кода из Delphi все равно не обрабатывается исключение :( , хотя должно!

Хотелось бы все же выяснить, почему?
P.S.Где эта опция-stop on delphi exceptions (сорри, что-то не нашел)


 
Юрий Зотов ©   (2003-12-25 21:14) [16]

> Alexis © (25.12.03 21:00) [15]

Зачем Вы, извините, пудрите людям мозги с несуществующей проблемой?

В [6] я Вас спросил: "Запускаете программу из-под Delphi или автономно"?

В [8] Вы мне ответили: "и так, и так фигня получается-оба раза Error".

И, извините, соврали. ЗАЧЕМ?

У Вас все работает так, как и должно работать. Если не считать утечки памяти - но это уже другая проблема.



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-37629
Pa5ha
2003-12-26 23:26
2004.01.13
Почему окно вспыхивает? :)


8-37810
begemot
2003-09-10 21:40
2004.01.13
CDROM занят?


3-37535
Olga_Oo
2003-12-16 11:41
2004.01.13
String


7-37944
Tomkat
2003-10-31 09:05
2004.01.13
Сгорит ли LPT ?


1-37736
serg128
2003-12-30 13:07
2004.01.13
Kak получить номер (индекс) выбранного узла в TTreeView?