procedure THIMainForm._onClose;
...
//Applet := nil;
//Control := nil;
end;
end;
Этот топик читают: Гость
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Galkov,
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco, меня беспокоил НЕ вопрос меню, а то, что завтра появится какой-нибудь хитрый контролл, который после onDestroy плюнет не только в onMessage (где мы фиксили), но и в какой-нибудь onResize (где не фиксили), или еще черте куда...
Какой-нибудь TrayIcon перехватит onMessage у Parent-а, и от этого фиксинга и следа не останется ... Поэтому на сегодня у меня совершенно определенное мнение (а не вскользь ![]() ... фиксинг ранее мне не предствляется достаточным, и это НЕ дополнительно к нему, а ВМЕСТО него ![]() |
|||
карма: 9 |
|
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Galkov, а не знаю хода твоих мыслей, а по тому, что ты писал было затронуто на уровне -- вскользь. Или -- "размышления вслух". А кто мешает определится с вопросом -- куда следующий раз может "плюнуть". И кто уверен, что Control := nil не появится раньше чем будет вызван _onClose.
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): И кто уверен, что Control := nil не появится раньше чем будет вызван _onCloseЯ уверен. Обрати внимение, такую строку (Control := nil) я выкосил из своих кодов на веки вечные ![]() Мы ее (эту строку) делали как флаг, чтобы не запускать повторно Control.Free, а потом начинали с этим героически бороться. Завожу отдельный флаг ВМЕСТО этой строки - и предмет героической борьбы исчезает. Вроде бы. |
|||
карма: 9 |
|
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Galkov, это ты у себя выкосил. А кто уверен, что завтра он не появится где-то еще?
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Тот кто отвечает за неглючность кодов. Я за свои отвечаю - у меня не появится.
Философский вопрос: а кто отвечает, что ты дважды не прочистишь какой-нибудь Bitmap через Free ??? Ты ![]() Вот я отвечаю в своих кодах, чтобы дважды не прочистить Control - и завожу флаг NoKill (наступивши предварительно на грабли с его обнулением) Кстати, других мест обнуления контролла, кроме указанных выше, в наших кодах и нет. Т.е., я не только у себя выкосил, но и всем рассказал где и как. [size=-2]------ Добавлено в 01:15 nesco писал(а): А кто мешает определиться с вопросом -- куда следующий раз может "плюнуть"С этим можно разобраться для конкретного элемента. К примеру, для меню. Но не для какого нибудь SuperPuperBallon-а. Потому что сегодня его никто еще не сделал. Да и разборки со всеми событиями (в отличии от onMessage, там проще - Sender, это тот же самый контролл, только его никто не обнулял) - это геморрой ЗНАЧИТЕЛЬНО больший предложенного выше. Упоминал про TrayIcon - там действительно ведь перехватывается onMessage. Там фиксить тоже ??? А где еще ??? И чего делать с теми, кто еще захочет перехватить ??? Учить их новым правилам ??? Ну вот это все и мешает... А я исправил-то ВМЕСТО всей этой (не до конца решенной головной боли) три простенькие строчки... |
|||
карма: 9 |
|
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Galkov, а вот с этим
а кто отвечает, что ты дважды не прочистишь какой-нибудь Bitmap через Free ??? я сейчас очень осторожно действую. Тянет немного код, но лучше один раз отследить, чем потом вот так -- страдать геморроем. Твои уроки с "гранатой" пошли на пользу.
[size=-2]------ Добавлено в 01:25 Самое интересное -- я ввел фиксинги по твоему методу, но Меню благополучно завалилось. Мессага прошла насквозь и завалила выход, т.е. кто-то уже обнулил Control. Похоже, FHandle:=0 всеже блокировал передачу мессаг на выход. |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Блин... Как меня достало разгребать онанизм в MainForm
![]() Только из-за того, что очень сложно было, почему-то, использовать inherited Init
Просто выкини эту ф-ю, вместе с описанием в определении класса. За ненадобностью - таковая есть у предка |
|||
карма: 9 |
|
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Galkov, да точно -- прокатило. Я весь destructor вытер, т.к. там больше ничего не было, и зачем его тогда перелавливать? Все -- нормально стало выходить. Значит, Control := nil больше никто не делает.
|
|||
карма: 22 |
|
Ответов: 150
Рейтинг: 0
|
|||
Ребяты, мне каким-то образом удалось устранить ошибку на выходе в программке, которая выдавала ошибку: Invalid pointer operation.
![]() ![]() code_620 |
|||
карма: 0 |
| ||
файлы: 1 | code_620.txt [3.2KB] [297] |
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Ntl-M, во-перых: тот компонент MenuEx, который ты используешь не достаточно работоспособный, по возможности лучше замени. Во-вторых: методом прямого исключения компонентов можно определить из-за какого, конкретно, происходит сбой. Все это происходит по причине некорректности отработки завершения работы какого-то компонента. А вот какого, надо вычислить.
|
|||
карма: 22 |
|
Ответов: 150
Рейтинг: 0
|
|||
nesco, новую форму я установила, но ошибка в одной из программ осталась, как я и писала раньше. Не хотелось бы менять MenuEx, так как в одной из программ он работает без ошибок. А переподключала много всего - трудно сказать, что помогло избавиться от ошибки
![]() |
|||
карма: 0 |
|
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Ntl-M, попробуй по-одному повыкидывай сначала графические компоненты по схеме -- выкинул (CTR-X), запустил/закрыл, плохо, выкинул следующий... и так, пока не перестанет сыпать ошибку. Затем, для чистоты эксперимента, вставить последний удаленный компонент (CTR-V) и на последок еще раз проверить.
|
|||
карма: 22 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2025-01-17 20:33:13 |
|||
карма: 0 |
|
Разработчик
Ответов: 26177
Рейтинг: 2128
|
|||
Ntl-M, ты можешь прислать кусок схемы, который вызывает ошибку? Если чего-то боишься, то вытри все данные.
|
|||
карма: 22 |
|