Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Access voilation при работе с реестром... [D6, Win2k]


Соловьев ©   (2003-02-06 11:13:00) 

Мастера, кто-то сталкивался с такой траблой, при закрытии формы
ошибка Access violation... После исканий выяснилось что эта ошибка появляется при использовании такого кода:
procedure TfMain.FormCreate(Sender: TObject);
var Reg : TRegistry;
begin
try
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey("Software\Ckop\DB",false);
PathDB := Reg.ReadString("PATHDB");
finally
Reg.Free;
if PathDB="" then
with Application do
begin
MessageBox("Ви не маєте прав на користування данною программою. Зверніться до розробника.","Помилка",MB_OK or MB_DEFBUTTON1 or MB_ICONSTOP);
ShowAbout;
Terminate;
end;
end;
end;

Это глюки TRegistry или мои? Но где я не как непойму...


Соловьев   (2003-02-06 12:12:00) [1]

А у меня Win2K(sp3)


Palladin   (2003-02-06 12:12:00) [2]

советую проверить дальнейшую работу с переменной PathDB.


Anatoly Podgoretsky   (2003-02-06 12:11:00) [3]

Соловьев © (06.02.03 11:59)
Это не есть основание для такого вывода, ошибка может быть в другом месте, просто в этом случае она не возникает.


Palladin   (2003-02-06 12:10:00) [4]

воспроизвел ситуацию и никакого exception не возникало.
D6,WinXP


Соловьев   (2003-02-06 11:59:00) [5]

делаю коментарий {}на этот код и все работатет.


Palladin   (2003-02-06 11:57:00) [6]

а какого рода изыскания подвели вас к решению что ошибка именно в этом коде?


Соловьев   (2003-02-06 11:38:00) [7]

2 Anatoly Podgoretsky ©

> Ну например это Reg := TRegistry.Create; поместить перед
> try

Почему? Можно поконкретнее?


> Например вот это ShowAbout; неизвестный фактор

Это форма - расказывает о разработчике:
Application.MessageBox(
"Розробник ...."
,"Про програму...",MB_OK or MB_DEFBUTTON1 or MB_ICONINFORMATION);




> Например вот это Terminate; как то странно делать в конструкторе


Это я исправлю.


> И главное, почему не хочешь говорить в какой строке у тебя
> происходит ошибка, это чего нам набрать твой коди и самим
> протрассировать?

Ошибка, когда я закрываю форму. Нажимаю на [X]. Обработчика нет.


Anatoly Podgoretsky   (2003-02-06 11:33:00) [8]

Соловьев © (06.02.03 11:21)
Так тебя оказывается совсем другой вопрос интересует, а не кто виноват?
Ну например это Reg := TRegistry.Create; поместить перед try
Например вот это ShowAbout; неизвестный фактор
Например вот это Terminate; как то странно делать в конструкторе


И главное, почему не хочешь говорить в какой строке у тебя происходит ошибка, это чего нам набрать твой коди и самим протрассировать?


Соловьев   (2003-02-06 11:26:00) [9]


> Юрий Федоров © (06.02.03 11:24)
> На FormCreate вызывать Application.Terminate как-то не очень
> хорошо, имхо.

Трабл не в этом, пусть я тут наглючил, но Программа туда и не попадает. PATHDB -существует и не пустой.


Юрий Федоров   (2003-02-06 11:24:00) [10]

На FormCreate вызывать Application.Terminate как-то не очень хорошо, имхо. Лучще вставить проверку записи в реестре в файл DPR, и в случае проблем не создавать главную форму.
Или же поместить код в конструкторформы и при необходимости поднять Exception. ФОрма разрущится, приложение закроется.


Соловьев   (2003-02-06 11:21:00) [11]

Ок, хорошо. А где если не секрет?


Anatoly Podgoretsky   (2003-02-06 11:20:00) [12]

Твои конечно


Наверх

Титульная страница Поиск, карта сайта Написать письмо