Текущий архив: 2006.07.30;
Скачать: CL | DM;
Вниз
Отчего Exception? Найти похожие ветки
← →
georgius © (2006-06-20 17:08) [0]Регулярно после закрытия приложения вылетает EAccessViolation.
Не каждый раз, а только если в ходе сеанса открывал одну форму.
Странно, форма, как форма, открываю просто - создал-показал-удалил.
В момент удаления формы - все благополучно, а Exception появляется только при закрытии приложения.
← →
Плохиш © (2006-06-20 17:14) [1]Ошибка в 17й строке
← →
Ega23 © (2006-06-20 17:20) [2]Как создаёшь, как удаляешь?
← →
Германн © (2006-06-20 17:44) [3]Какие компоненты на этой форме?
← →
Cashmare © (2006-06-20 17:48) [4]При выходе из программы пытаешься закрыть уже закрытое?
← →
Kotyara (2006-06-20 18:33) [5]У меня такое было, когда в MDI приложении на child форме расположен "косой десяток" компонентов, сбрасывающих свое состояние на диск во время закрытия. Если закрыть такое приложение с открытым дочерним окном, выскакавало исключение. Походе, главная форма успевала "прикрыть" дочернюю форму раньше, чем она нормально закрывалась. Переместил код закрытия дочерней формы из OnClose в OnCloseQuery - ошибка пропала.
← →
Ega23 © (2006-06-20 18:44) [6]AV означает, что ты обращаешься к ещё не созданному объекту или уже убитому.
Самый интересный вариант, когда объект "наполовину" создан... :о) Или убит.
← →
Плохиш © (2006-06-20 18:47) [7]
> Ega23 © (20.06.06 18:44) [6]
На чём гадаешь? На кофейной гуще или на пивной пене? ;-)
← →
georgius © (2006-06-20 19:01) [8]Похоже, проблема не в окошке. На главном окне мильён компонентов (из нескольких Frame-ов), куча графики и т.п.
Ошибка возникает в коде TComponent.RemoveNotification - видимо где-то что-то не вовремя освобождается. Обидно, что код не мой, это все системные вызовы.
← →
Плохиш © (2006-06-20 19:10) [9]
> Обидно, что код не мой, это все системные вызовы.
Ну да, опять Билл Геитс виноват? Поищи бревно в глазу своём, то бишь коде. Все эти ошибки являются следствием твоих ошибок в программе.
> На главном окне мильён компонентов (из нескольких Frame-
> ов), куча графики и т.п.
Вот тут-то ты и пытаешься что-то использовать после уничтожения.
← →
Ega23 © (2006-06-20 19:11) [10]Рекомендую обратить внимание на SetParent у фреймов.
← →
georgius © (2006-06-20 19:15) [11]2 Ega23: точно, наелся я в свое время с этими Parent-ами.
Но в этом случае, похоже, мне подложил собаку SplashWindow из RX. Закомментарил все вызовы - работает без сбоев. Только Splash все-равно какой-то нужен, а то процессы переключения режимов могут занимать 2-3 секунды при большой базе.
← →
georgius © (2006-06-20 20:42) [12]Камрады, спасибо за советы, меня подвело сочетание SplashWindow и LockWindowUpdate. Может подскажете что-нибудь дельное, как на время обширных изменений в окне: 1) заморозить изображение, чтобы ничего не мерцало и 2) показать какое-нибудь окошко, типа "ждите".
← →
Cashmare © (2006-06-21 00:28) [13]georgius © (20.06.06 20:42) [12]
1) заморозить изображение, чтобы ничего не мерцало
DoubleBuffered или BeginUpdate...EndUpdate. Окно - понятие растяжимое, смотря какое у тебя окно.
← →
georgius © (2006-06-21 14:53) [14]2 Cashmare:
Ты все правильно говоришь, для деревьев использую Begin/EndUpdate, для grids - Enable/DisableControls. DoubleBuffered включаю у всего, что только можно, даже с WM_SETREDRAW поигрался, и все-равно только LockWindowUpdate по-настоящему убирает все мерцание.
А окношо - большое, отображается штук 8-мь таблиц в DBgrid и DBTree, так что мерцание обязательно нужно лечить. Минус у применения LockWindowUpdate в том. что он не сочетается со SplashWindow из RX
Страницы: 1 вся ветка
Текущий архив: 2006.07.30;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.056 c