Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

ошибка при закрытии   Найти похожие ветки 

 
Grinder   (2004-01-26 21:00) [0]

Ребята. Подскажите где ошибка.
Есть окно THintWindow и переменная с этим типом Hint.
Есть форма Form3, у которой parent этот hint.
По нажатии на кнопку на главной форме происходит следующее.

procedure TForm1.Button2Click(Sender: TObject);
begin
Application.CreateForm(TForm3, Form3);
unit2.hint:=TIconHintX.Create(self);
form3.Left:=0;
Form3.Top:=0;
form3.Parent:=unit2.hint;
Form3.Show;
unit2.hint.ActivateHint(Rect(10,100,110,200),"");
end;

Обработчик закрытия Form3 следующий

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unit2.hint.ReleaseHandle;
unit2.hint.Free;
unit2.hint:=nil;
Action:=caFree;
form3:=nil;
end;

При закрытии происходит ошибка

Project Project1.exe raised exception class EAccessViolation with message "Access violation at address 00000000. Read of address
00000000". Process stopped. Use Step or Run to continue.

В чем тут проблема?

P.S.

TIconHintX = class(THintWindow)

файл проекта

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);

// Application.CreateForm(TForm3, Form3);
Application.Run;
end.


 
Митяй2   (2004-01-26 21:03) [1]

Смотри по BreakPoint"у...


 
Grinder   (2004-01-26 22:49) [2]

Смотрел.

Ошибка возникает сразу после end; в коде
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unit2.hint.ReleaseHandle;
unit2.hint.Free;
unit2.hint:=nil;
Action:=caFree;
form3:=nil;
end;

Причем не после form3:=nil;, а после end; Если после form3:=nil; вставить скажем beep;, то нормально работает и опять после end; ошибка. Но как это понять не знаю.


 
Grinder   (2004-01-27 22:17) [3]

Народ. Няужо никто не поможет?


 
Islander   (2004-01-27 22:20) [4]

form3:=nil; - ТЫ ХОТЬ ПОНИМАЕШЬ, ЧТО ТЫ ПИШЕШЬ?! ХОЧЕШЬ УКАЗАТЕЛЬ НА ФОРМУ ДО ЕЕ УНИЧТОЖЕНИЯ НАПРАВИТЬ В НЕКУДА?!


 
Юрий Федоров   (2004-01-27 22:47) [5]

>>Islander (27.01.04 22:20) [4]

Ну и что? Указатель снаружи, форме, чтобы разрушиться, внешний указатель не нужен

>>Grinder © (26.01.04 22:49) [2]

Ты уверен, что hint.ReleaseHandle нужно вызывать?
На вскидку, никакого криминала не видно.

В любом случае закомментируй весь FormClose, а потом открывай по одной строке и смотри, когда начнет падать.
Либо же ошибка вообще в другом месте. Может в классе TIconHintX что-то напортачено ?


 
Grinder   (2004-01-29 14:44) [6]

2IsLander

Почитай Marco Cantu. Там написано так делать правильно.


 
Grinder   (2004-01-29 14:46) [7]

2Юрий Федоров

Убрал hint.Free - работает. Но почему так? Не пойму. Т.е. вызывается только ReleaseHandle.



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

Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
7-29641
ychenick
2003-11-04 17:28
2004.02.10
Помогите с LPT портом


11-29293
Wizard2003
2003-05-25 22:11
2004.02.10
PE Icon...


1-29387
electric
2004-02-01 17:41
2004.02.10
Работа программы останавливается после после открытия модуля


14-29575
alxx
2004-01-14 10:57
2004.02.10
Кто-нибудь подключал КПК через ИК GPRS к мегафону?


3-29260
Korenb Grif
2004-01-17 19:32
2004.02.10
Dbgrid илил table





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский