Вниз
Скачать: CL | DM;

Процедура вызывает 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_RELEASE

procedure 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 вся ветка

Скачать: CL | DM;



Память: 0.61 MB
Время: 0.045 c
2-1271766736
Ванич
2010-04-20 16:32
2010.08.27
TMemo


15-1273860812
AKE
2010-05-14 22:13
2010.08.27
Согласитесь, что нехватает оператора типа a < x < b


11-1195764794
tigra
2007-11-22 23:53
2010.08.27
kol-synapse


15-1269974235
Masolin_gazin
2010-03-30 22:37
2010.08.27
Почем Delphi 7 не произвести компиляцию.


4-1226752749
VolMyr
2008-11-15 15:39
2010.08.27
хук на интернет адрес




   Наверх