Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26177
Рейтинг: 2128
#16: 2006-11-20 23:59:42 ЛС | профиль | цитата
Galkov,
procedure THIMainForm._onClose;
...
//Applet := nil;
//Control := nil;
end;
end;
а вот это для меня ново -- про это было затронуто вскользь, без утвердительного ответа на вопрос надо или не надо?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#17: 2006-11-21 00:14:41 ЛС | профиль | цитата
nesco, меня беспокоил НЕ вопрос меню, а то, что завтра появится какой-нибудь хитрый контролл, который после onDestroy плюнет не только в onMessage (где мы фиксили), но и в какой-нибудь onResize (где не фиксили), или еще черте куда...
Какой-нибудь TrayIcon перехватит onMessage у Parent-а, и от этого фиксинга и следа не останется ...

Поэтому на сегодня у меня совершенно определенное мнение (а не вскользь ):
... фиксинг ранее мне не предствляется достаточным, и это НЕ дополнительно к нему, а ВМЕСТО него

карма: 9

0
Разработчик
Ответов: 26177
Рейтинг: 2128
#18: 2006-11-21 00:22:39 ЛС | профиль | цитата
Galkov, а не знаю хода твоих мыслей, а по тому, что ты писал было затронуто на уровне -- вскользь. Или -- "размышления вслух". А кто мешает определится с вопросом -- куда следующий раз может "плюнуть". И кто уверен, что Control := nil не появится раньше чем будет вызван _onClose.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#19: 2006-11-21 00:31:06 ЛС | профиль | цитата
nesco писал(а):
И кто уверен, что Control := nil не появится раньше чем будет вызван _onClose

Я уверен. Обрати внимение, такую строку (Control := nil) я выкосил из своих кодов на веки вечные

Мы ее (эту строку) делали как флаг, чтобы не запускать повторно Control.Free, а потом начинали с этим героически бороться.
Завожу отдельный флаг ВМЕСТО этой строки - и предмет героической борьбы исчезает.
Вроде бы.
карма: 9

0
Разработчик
Ответов: 26177
Рейтинг: 2128
#20: 2006-11-21 00:40:22 ЛС | профиль | цитата
Galkov, это ты у себя выкосил. А кто уверен, что завтра он не появится где-то еще?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#21: 2006-11-21 01:15:05 ЛС | профиль | цитата
Тот кто отвечает за неглючность кодов. Я за свои отвечаю - у меня не появится.
Философский вопрос: а кто отвечает, что ты дважды не прочистишь какой-нибудь Bitmap через Free ??? Ты
Вот я отвечаю в своих кодах, чтобы дважды не прочистить Control - и завожу флаг NoKill (наступивши предварительно на грабли с его обнулением)

Кстати, других мест обнуления контролла, кроме указанных выше, в наших кодах и нет. Т.е., я не только у себя выкосил, но и всем рассказал где и как.

[size=-2]------ Добавлено в 01:15
nesco писал(а):
А кто мешает определиться с вопросом -- куда следующий раз может "плюнуть"

С этим можно разобраться для конкретного элемента. К примеру, для меню. Но не для какого нибудь SuperPuperBallon-а. Потому что сегодня его никто еще не сделал.
Да и разборки со всеми событиями (в отличии от onMessage, там проще - Sender, это тот же самый контролл, только его никто не обнулял) - это геморрой ЗНАЧИТЕЛЬНО больший предложенного выше.
Упоминал про TrayIcon - там действительно ведь перехватывается onMessage. Там фиксить тоже ???
А где еще ???
И чего делать с теми, кто еще захочет перехватить ??? Учить их новым правилам ???
Ну вот это все и мешает...

А я исправил-то ВМЕСТО всей этой (не до конца решенной головной боли) три простенькие строчки...
карма: 9

0
Разработчик
Ответов: 26177
Рейтинг: 2128
#22: 2006-11-21 01:25:45 ЛС | профиль | цитата
Galkov, а вот с этим
а кто отвечает, что ты дважды не прочистишь какой-нибудь Bitmap через Free ???
я сейчас очень осторожно действую. Тянет немного код, но лучше один раз отследить, чем потом вот так -- страдать геморроем. Твои уроки с "гранатой" пошли на пользу.

[size=-2]------ Добавлено в 01:25
Самое интересное -- я ввел фиксинги по твоему методу, но Меню благополучно завалилось. Мессага прошла насквозь и завалила выход, т.е. кто-то уже обнулил Control. Похоже, FHandle:=0 всеже блокировал передачу мессаг на выход.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#23: 2006-11-21 04:01:39 ЛС | профиль | цитата
Блин... Как меня достало разгребать онанизм в MainForm
Только из-за того, что очень сложно было, почему-то, использовать inherited Init
procedure THIMainForm._onDestroy(Obj:PObj);
begin
Control := nil;
end;

Просто выкини эту ф-ю, вместе с описанием в определении класса.
За ненадобностью - таковая есть у предка
карма: 9

0
Разработчик
Ответов: 26177
Рейтинг: 2128
#24: 2006-11-21 10:43:51 ЛС | профиль | цитата
Galkov, да точно -- прокатило. Я весь destructor вытер, т.к. там больше ничего не было, и зачем его тогда перелавливать? Все -- нормально стало выходить. Значит, Control := nil больше никто не делает.
карма: 22

0
Ответов: 150
Рейтинг: 0
#25: 2006-11-21 18:53:53 ЛС | профиль | цитата
Ребяты, мне каким-то образом удалось устранить ошибку на выходе в программке, которая выдавала ошибку: Invalid pointer operation. Я что-то переподключила и пока ошибки нет ни на выходе через меню, ни при прямом выходе. А вот в другой программке при ПРЯМОМ выходе из нее так и выскакивает сообщение об ошибке: Access violation at address 0410A34 in module "название.exe". Read of address 0000024B. А при выходе через меню все гладко. С чем может быть связана ошибка?

code_620
карма: 0

0
файлы: 1code_620.txt [3.2KB] [297]
Разработчик
Ответов: 26177
Рейтинг: 2128
#26: 2006-11-21 19:34:44 ЛС | профиль | цитата
Ntl-M, во-перых: тот компонент MenuEx, который ты используешь не достаточно работоспособный, по возможности лучше замени. Во-вторых: методом прямого исключения компонентов можно определить из-за какого, конкретно, происходит сбой. Все это происходит по причине некорректности отработки завершения работы какого-то компонента. А вот какого, надо вычислить.
карма: 22

0
Ответов: 150
Рейтинг: 0
#27: 2006-11-22 01:46:50 ЛС | профиль | цитата
nesco, новую форму я установила, но ошибка в одной из программ осталась, как я и писала раньше. Не хотелось бы менять MenuEx, так как в одной из программ он работает без ошибок. А переподключала много всего - трудно сказать, что помогло избавиться от ошибки
карма: 0

0
Разработчик
Ответов: 26177
Рейтинг: 2128
#28: 2006-11-22 20:28:10 ЛС | профиль | цитата
Ntl-M, попробуй по-одному повыкидывай сначала графические компоненты по схеме -- выкинул (CTR-X), запустил/закрыл, плохо, выкинул следующий... и так, пока не перестанет сыпать ошибку. Затем, для чистоты эксперимента, вставить последний удаленный компонент (CTR-V) и на последок еще раз проверить.
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#29: 2006-11-22 23:47:25 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-17 20:33:13
карма: 0

0
Разработчик
Ответов: 26177
Рейтинг: 2128
#30: 2006-11-23 00:47:59 ЛС | профиль | цитата
Ntl-M, ты можешь прислать кусок схемы, который вызывает ошибку? Если чего-то боишься, то вытри все данные.
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)