![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
||
|
|
| MetalFan |
|
||||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
а не проще создать класс-менеджер форм определенного типа, который будет уметь их создавать, убивать, вести их список...
видимо это был я. аналог приведенного в шапке кода
действительно поверг меня в шок... еще бы BSOD вызывали для проверки ;) шучу просто по логике в except секции должен находиться код, который может попытаться проанализировать и исправить возникшие ошибки... он должен выполнять минимум простейших действий, которые сами по себе не могут привести к дальнейшим ошибкам... здесь же получается, что если словили AV, то происходит громадная работа по созданию и отображению формы... которая сама по себе так же может вызвать исключения.... ужас в общем на мой взгляд... в шутку предлагаю модифицировать код:
проблему поможет решить простейший вспомогательный класс-менеджер. ну или на худой случай доп.флаг. но никак не код, который может привести к AV. а может сразу и не привести... Это сообщение отредактировал(а) MetalFan - 31.5.2007, 16:02 -------------------- There are always someone smarter than you... |
||||||
|
|||||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 15 Всего: 95 |
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
потому, что неизвестно, какие данные могут быть повреждены в случае AV. еще раз повторю - "гашение" Access Violation с помощью try..except блока - не есть хорошее решение. ВДУМАЙСЯ в смысл ошибки. AV - это не игрушка. AFAIK в случае возникновения нарушение доступа в драйвере система уходит в bsod... AV - нарушение доступа при чтении или записи в неподготовленную(непредназначенную) для этого область памяти... а что, если часть методов "умершего" экземпляра класса отработает, "успешно" поназапишет чего-нибудь в те части памяти, что используются уже другими экземплярами... и в самом конце вдруг все-таки свалится с AV. ты радостно создаешь новую форму в except блоке... но вдруг у тебя начинают невзначай подглючивать другие формы/классы... или все будет в шоколаде, а приложение у клиента начнет валиться? а? или в след.версии делфи что-то поменяется в методе ShowModal и твое приложение попросту откажется нормально работать... в общем я думаю надо сделать отдельную тему с голосовалкой, в которой спросить, что "корректно ли использовать AV в качестве уведомления об несозданном/убитом экземпляре класса?" я думаю, что ответ "нет" все-таки перевесит... -------------------- There are always someone smarter than you... |
|||
|
||||
| Igor_thief |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 12.9.2006 Где: Украина Репутация: нет Всего: нет |
Всем очень внимательно надо почитать следующее http://delphi.about.com/od/adptips2005/qt/nilselfapp.htm и ссылки которые есть в статье! Жду комментов статьи? Мне лично не очень понятно почему при создании немодальных форм не стоит передавать в create(self (главную форму)), а лучше передавать Application. Если передать Application, то тогда форму потом не надо освобождать в деструкторе главной формы. Форму уделит Application еще до дестроя главной формы.
--------------------
В каждом из нас спит гений, и с каждым днем все крепче ...delphigeek.blogspot.com | www.iskomorokh.com |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |