|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2017, 23:31 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Как проверить, что адрес метода более недоступен?
Здравствуйте,
как проверить что метод по адресу (объекта) более недоступен? Грубо говоря есть код: Код:
когда 1 событие слушает толпа подписчиков. Беда в том, что если подписчик, не отпишет слушатель, и умрет (Free, FreeAndNil), то адрес метода будет по прежнему формально жив, но при обращении к нему, программа логично вылетит с AV в трубу. Хотельсь бы как-то не заморачиваться с заботой об освобождении подписоты, и просто игнорировать битые ссылки. Ещё один момент, вместо списка указателей, у меня список самих процедур: Код:
Assigned и <> nil - не предлагать, не работает. Пока что ничего интереснее чем залепить пустую try except - не придумал. Работает конечно, однако думаю, что это не решение проблемы, а костыль Последний раз редактировалось Человек_Борща; 05.06.2017 в 23:35. |
06.06.2017, 01:32 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Вместо массива указателей на методы держать массив указателей на объекты. Сами объекты должны уведомлять перед разрушением этот fOnWrite о своей кончине, что бы он позаботился например о сбросе в nil элемента массива. Тогда и Assigned заработает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как проверить, что не так с TCP | Krasi | Общие вопросы .NET | 1 | 18.01.2016 18:14 |
Как лучше проверить адрес E-mail на правильность? | Leximus | Общие вопросы Delphi | 26 | 13.05.2012 08:43 |
Как передать адрес метода из dll в приложение и присвоить его событию OnClick? | puga555 | Общие вопросы Delphi | 1 | 22.12.2009 17:04 |
Получить адрес метода | Altera | Общие вопросы Delphi | 2 | 02.10.2009 13:43 |
Адрес метода класса? | VintProg | Общие вопросы Delphi | 6 | 27.09.2009 13:10 |