Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПроцедура вызывает AV Найти похожие ветки
← →
sniknik © (2010-04-28 00:57) [80]> Какое отношение Release имеет к обработчикам событий компонент, я честно не понимаю.
только одно отношение, это аналог, когда "убивают" себя из своего же обработчика. с формой такая ситуация происходит чаще, вот и позаботились.
и также это путь к обходу сабжа, ничего не мешает сделать тоже самое для имеджа например.
← →
sniknik © (2010-04-28 01:01) [81]> только одно отношение
+ все компоненты формы "помрут" вместе с ней, т.что и из обработчика компонент лежащих на форме делать Free форме противопоказано.
← →
Игорь Шевченко © (2010-04-28 01:09) [82]
> только одно отношение, это аналог, когда "убивают" себя
> из своего же обработчика
Free в release тоже вызывается из обработчика сообщения. Сообщения CM_RELEASEprocedure TCustomForm.Release;
begin
PostMessage(Handle, CM_RELEASE, 0, 0);
end;
procedure TCustomForm.CMRelease;
begin
Free;
end;
из OnClick почему нельзя убивать - выяснили, Click срабатывает на MouseDown, а кроме него еще есть MouseUp к тому же контролу, уже в очереди.
← →
sniknik © (2010-04-28 01:20) [83]> Free в release тоже вызывается из обработчика сообщения. Сообщения CM_RELEASE
ну и что? он же по событию вызовется в общей очереди между обработчиками, после отработавших и до возможных... после "убийства" формы отправленных в "никуда" (событие на не существующий хендл к AV не приводят, только к невыполнению события).
вызов Free это не баг, и не приводит к багу, если только он не сделан в неправильном месте (до обращений к обьекту).
> из OnClick почему нельзя убивать
лучше считай откуда можно... меньше получится.
← →
Германн © (2010-04-28 02:00) [84]
> лучше считай откуда можно... меньше получится.
+1
Опередил.
> И обсуждалось подобное не раз, чудес не было, только "свезло/не
> свезло".
(c) LVT
← →
Игорь Шевченко © (2010-04-28 10:33) [85]sniknik © (28.04.10 01:20) [83]
> он же по событию вызовется в общей очереди между обработчиками,
> после отработавших и до возможных
переведи. Это обычный обработчик сообщения, тот же самый динамический метод, как и в WM_MOUSEUP
> вызов Free это не баг, и не приводит к багу
Вызов Free это не баг, но может привести к багу.
> лучше считай откуда можно... меньше получится.
Я начну считать, тебе мало не покажется
← →
sniknik © (2010-04-28 12:55) [86]> переведи.
по русски написано.
> Это обычный обработчик сообщения, тот же самый динамический метод, как и в WM_MOUSEUP
а ты не путай, при сабжевом глюке событие не вызывается вызывается метод.
> Вызов Free это не баг, но может привести к багу.
ВСЕ может привести к багу.
← →
Игорь Шевченко © (2010-04-28 13:03) [87]
> а ты не путай, при сабжевом глюке событие не вызывается
> вызывается метод.
в чем разница ?
← →
oxffff © (2010-04-28 15:01) [88]Читаю с середины второй день подряд.
И не могу понять в чем суть обсуждения?
Если во вложенном методе будет разрушен объект и это не приведет к проблемам, то ничего плохого нет.
А плохое это не только использование разрушенногого объекта, но и использование частично деинициализированного объекта.
Но ведь Tobject.Free по факту ссылается на выходе на разрушенный объект и работает же.
Это вопрос логики.
← →
sniknik © (2010-04-28 15:49) [89]> в чем разница ?
для тебя ни в чем... а глюк в одном случае считай происками шайтана, нормальную работу в другом замыслом создателя...
плевать в общем, считай чем хочешь.
← →
Игорь Шевченко © (2010-04-28 16:36) [90]sniknik © (28.04.10 15:49) [89]
не плюйся, вылетит, не поймаешь
← →
12 © (2010-04-28 16:44) [91]грустно смотреть
← →
pavel_guzhanov © (2010-04-29 08:49) [92]Всем спасибо. По крайней мере я понял причину, по которой получается AV.
Буду думать, как сделать по-другому :о)
← →
sniknik © (2010-04-29 10:03) [93]> Буду думать, как сделать по-другому :о)
чего тут думать? еще в [35] было указание на то как борлад подобное "обходит", посмотреть код в генофонде (несколько строк всего), да модифицировать "под себя".
а в [42] прямой пример замены ничего не меняющей ни в отображении и в логике, только проверки станут другими, не на nil а на видитмость.
← →
Плохиш © (2010-04-29 10:20) [94]
> 12 © (28.04.10 16:44) [91]
>
> грустно смотреть
Просто весеннее обострение ;-)
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.074 c