Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
ВнизРеестр Найти похожие ветки
← →
Tapchyk (2003-04-29 01:29) [0]У меня такая проблема: мне нужно создать новий параметр в реєстре, я создаю переменную типа TRegistry, потом делаю СreateKey. Так вот, когда у меня есть права создать етот ключ, то проблем нет, все нормально, а когда нет прав, то вискакивает ошибка. Как сделать так, чтоб ошибка не вискакивала, а в программе я просто узнал, создан ключ или нет? Заранее благодарен.
← →
Goffman (2003-04-29 06:45) [1]Помести код создания ключа в защищенный блок
try
CreateYourRegistryKey;
except
Действия при ошибке
end;
← →
Separator (2003-04-29 07:00) [2]
var
Reg: TRegistry;
begin
Reg:= TRegistry.Create;
if Reg.OpenKey("KeyName", true) then begin
end else begin
end
end
← →
Дмитрий К.К. (2003-04-29 07:17) [3]F1. Там есть пример.
← →
Tapchyk (2003-04-29 11:40) [4]Посмотрите я делаю так, но все равно когла у меня нет прав на создание ключа програма не просто проглативает ето, а видает ошибку. ТО есть когда компилирую в Delphi (а не запускаю екзешку) оно вообще вишибает программу. Говорит "Failed to create key "MyKey"". Помогите.
procedure tform1.toregistryint(root:HKEY;key,param:string;check:tcheckbox);
var Reg: TRegistry;
b:boolean;
begin b:=false;
Reg := TRegistry.Create;
try Reg.RootKey := root;
if Reg.OpenKey(key,false)=false then
begin
try if Reg.createKey(key) then b:=true;
except
b:=false
end;
← →
Goffman (2003-04-29 11:52) [5]У тебя эта процедура вообще не дожна компилироваться. Что значит вышибает?
← →
evvcom (2003-04-29 12:53) [6]Более оптимальный вариант:
with TRegistry.Create do
try
RootKey := root;
if OpenKey(key, True) then
DoSomething;
finally
Free;
end;
Здесь в случае exception тебя должно выкидывать в отладчик, если стоит галка (по-умолчанию она стоит) Tools>Debugger Options>Language Exceptions>Stop on Delphi Exceptions, но "вышибать" совсем - не понятно.
← →
Tapchyk (2003-04-29 14:43) [7]Ета процедура написана не до конца, а только часть. ТО что написал evvcom ето и есть вишибает. Просто видает дельфовскою ошибку. Я понимаю что ети try...finally (except) должн помагать, но не тут то било :-(
← →
evvcom (2003-04-29 22:36) [8]Не знаю как это работает в версиях выше пятой, но до пятой включительно действительно так. Если Дельфи встречает исключение, то дает об этом знать (при установленной галке), но про try except/finally напрочь забывает. Надеюсь, что когда-нибудь Борланд обратит на это внимание. Для отладки подобных мест убирай временно галку, тогда не должно "вышибать".
А вообще разбирайся с тем, куда можно писать, а куда нет в реестре. Может в этом все и дело-то?
← →
Goffman (2003-04-30 06:18) [9]
> Я понимаю что ети try...finally (except) должн помагать
Блок try-finally-end тебе не поможет подавить исключение (в отличие от except). Это я к тому, вдруг ты на это рассчитываешь:)
← →
Xeon (2003-04-30 06:52) [10]Слушь, ты видать пытаешься создать ключ в защищёной области реестра? помоему я тя ничё не выйдет в любом случае! Т.к. некоторрые области реестра ты не имеешь право ни менять, ни создавать! Т.к. они системные... В них может токо винда чё-то делать, да и то не на прямую, как как бы с помощью добавления новой записи в базу данных. Типа "открыл файл, записал строку". Поэтому мой те совет: НЕ ПАРЬ СЕБЕ МОЗГИ! Есть разделы реестра в кторых можешь создавать чё хош! И удалять тоже :)
← →
Tapchyk (2003-04-30 10:45) [11]Нет Xeon например я поставил прогу на компе, на каком у меня права юзера, и чтоб у меня на каждом шаге не видавало ошибку. Просто чтоб, прога знала, что не удалось и больше никто :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c