powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / EAccessViolation
6 сообщений из 6, страница 1 из 1
EAccessViolation
    #32911221
Ruark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация.
Форма. Работаю с IBX-библиотекой. C++ Builder5. При закрытии формы выдаётся сообщение EAccessViolation at address 4077E558.
Пытаюсь оттрассировать.
После обработчика OnFormDestroy передаётся управление в деструктор. Из деструктора передаётся в модуль systdate.h
И эксцепшен выбивает на строке
__fastcall TDateTime(const double src) {Val = src;}
Я в упор не могу понять причём здесь этот модуль. Кто-нибудь такое встречал? Или 5 Билдер глючный?
Просьба ответ продублировать на ruslan2507@mail.ru
...
Рейтинг: 0 / 0
EAccessViolation
    #32911395
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuarkСитуация.
Форма. Работаю с IBX-библиотекой. C++ Builder5. При закрытии формы выдаётся сообщение EAccessViolation at address 4077E558.
Пытаюсь оттрассировать.
После обработчика OnFormDestroy передаётся управление в деструктор. Из деструктора передаётся в модуль systdate.h
И эксцепшен выбивает на строке
__fastcall TDateTime(const double src) {Val = src;}
Я в упор не могу понять причём здесь этот модуль. Кто-нибудь такое встречал? Или 5 Билдер глючный?
Просьба ответ продублировать на ruslan2507@mail.ru

Может , что перед деструкором формы что удаляешь ?
...
Рейтинг: 0 / 0
EAccessViolation
    #32915283
Ruark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JibSkeart RuarkСитуация.
Форма. Работаю с IBX-библиотекой. C++ Builder5. При закрытии формы выдаётся сообщение EAccessViolation at address 4077E558.
Пытаюсь оттрассировать.
После обработчика OnFormDestroy передаётся управление в деструктор. Из деструктора передаётся в модуль systdate.h
И эксцепшен выбивает на строке
__fastcall TDateTime(const double src) {Val = src;}
Я в упор не могу понять причём здесь этот модуль. Кто-нибудь такое встречал? Или 5 Билдер глючный?
Просьба ответ продублировать на ruslan2507@mail.ru

Может , что перед деструкором формы что удаляешь ?

Дело в том что OnFormDestroy работает как надо. На одну из причин этих глюков наткнулся.
Использую TQuery совместно TUpdateSQL. RefreshSQL не задаю. Сохраняю данные. После этого возникает этот глюк. Лечится полным удалением TUpdateSQL с формы, перекомпиляцией проекта, потом добавляю TUpdateSQL вновь, заполняю уже все тексты SQL. И работает. Это особенности работы TUpdate SQL или глюки Билдеров 5,6?
Но возникает этот глюк ещё в ряде момэнтов. Каких - понять не могу.
Те же проблемы возникают и в C++ Builder 6.

КТО С ТАКИМ СТАЛКИВАЛСЯ???

Есть ли инфа, в какие модули лезет деструктор формы, и какие переменные он вытягивает? Я трассировал деструктор. Он лезет в 2 модуля, но что он пытается вытащить оттуда - не знаю.

Буду рад ссылкам на факи, если таковые имеются.
...
Рейтинг: 0 / 0
EAccessViolation
    #32915573
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
Думаю в случае с VCL происходит ПРИБЛИЗИТЕЛЬНО следующее
1) надо вызвать деструкторы всех компанентов, что накиданы на форме. Т.е. деструктор скорее всего бежит по массиву Components и вызывает их деструкторы. Массив этот "упорядочен" по CreationOrder, т.е. убиваться компаненты будут в порядке обратном их создания.

2) после этого вызываются деструкторы всех членов класса. Ну мало ли что накидано внутри класса формы.

3) потом вызываются деструкторы всех базовых классов.
...
Рейтинг: 0 / 0
EAccessViolation
    #32916680
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuarkИ эксцепшен выбивает на строке
__fastcall TDateTime(const double src) {Val = src;}
Я в упор не могу понять причём здесь этот модуль.

Понять, при чем здесь этот модуль, поможет стек вызовов. Крайне сомнительно, что деструктор лезет сюда напрямую - скорее всего, происходит достаточно сложное взаимодействие, типа того, что какой-нибудь TDateTimePicker перед смертью пытается отправить в DataSet последнее введенное пользователем значение.

RuarkИспользую TQuery совместно TUpdateSQL. RefreshSQL не задаю. Сохраняю данные. После этого возникает этот глюк. Лечится полным удалением TUpdateSQL с формы, перекомпиляцией проекта, потом добавляю TUpdateSQL вновь, заполняю уже все тексты SQL. И работает. Это особенности работы TUpdate SQL или глюки Билдеров 5,6?
Очень странно. TQuery в дизайн-тайме открыт? (Active = true). Если держать его закрытым, никакого взаимодействия вообще не должно быть.

dwlДумаю в случае с VCL происходит ПРИБЛИЗИТЕЛЬНО следующее
Насколько я понимаю, должно происходить то же, что и в Delphi, с учетом разной реализации объектной модели.

В Delphi обычно происходит следующее: деструктор Destroy (с точки зрения сишника его можно назвать псевдодеструктором) уничтожает члены класса, после чего вызывает родительский Destroy. В принципе, возможен и обратный подход, но принято обращаться к родительскому деструктору в конце.

Деструктор класса TComponent делает следующее. Прежде всего, он выставляет всем принадлежащим компонентам флаг csDestroying. Затем он рассылает оповещения о своем уничтожении тем, кто выразил заинтересованность узнать об этом событии. После чего он грохает принадлежащие компоненты.

Мораль: в стандартной модели компонент может получить сообщение (вызов метода) в тот момент, когда он уже пришиб своих членов, но при этом у него будет стоять флаг уничтожения.
...
Рейтинг: 0 / 0
EAccessViolation
    #32917399
Ruark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer RuarkИ эксцепшен выбивает на строке
__fastcall TDateTime(const double src) {Val = src;}
Я в упор не могу понять причём здесь этот модуль.
Понять, при чем здесь этот модуль, поможет стек вызовов. Крайне сомнительно, что деструктор лезет сюда напрямую - скорее всего, происходит достаточно сложное взаимодействие, типа того, что какой-нибудь TDateTimePicker перед смертью пытается отправить в DataSet последнее введенное пользователем значение.


Интересно, а это как-то можно увидеть? То есть пытавется кто-то что-то загнать или нет?

RuarkИспользую TQuery совместно TUpdateSQL. RefreshSQL не задаю. Сохраняю данные. После этого возникает этот глюк. Лечится полным удалением TUpdateSQL с формы, перекомпиляцией проекта, потом добавляю TUpdateSQL вновь, заполняю уже все тексты SQL. И работает. Это особенности работы TUpdate SQL или глюки Билдеров 5,6?
Очень странно. TQuery в дизайн-тайме открыт? (Active = true). Если держать его закрытым, никакого взаимодействия вообще не должно быть.


Всё закрыто. Используется IBX библиотека, компоненты TIBDataBAse, TIBTransaction, TIBQuery, TIBUpdateSQL. Соответственно каждый ссылается друг на друга. TIBDataBAse я всегда держу в десигне закрытым. Соответственно и все IBQuery закрыты.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / EAccessViolation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]