Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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_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 вся ветка

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

Наверх





Память: 0.63 MB
Время: 0.064 c
15-1264759264
Alkid
2010-01-29 13:01
2010.08.27
Навеяно трахами с linux mint


15-1274076594
Anatoly Podgoretsky
2010-05-17 10:09
2010.08.27
Выбор писалки DVD


15-1265084562
Дмитрий С
2010-02-02 07:22
2010.08.27
Что делать, если на шлюзе не хватает портов для трансляции?


2-1271431396
Nikru
2010-04-16 19:23
2010.08.27
WebBrowser


2-1265410299
Vladimir200000
2010-02-06 01:51
2010.08.27
запись массива в поток





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский