Delphi - приложение с управлением ActiveX вызывает "appcrash" - PullRequest
1 голос
/ 13 октября 2010

Мне нужно использовать объект ActiveX (QlikOCX.ocx). Итак, я создал очень маленький пример приложения, который прекрасно работает, но когда я закрываю приложение, я получаю ошибку, подобную этой:

"application.exe больше не работает -> Поиск онлайн решения и закрыть программу -> Закрыть программу

Детали проблемы: Проблема-событие-имя: APPCRASH ... "

Я хочу знать, можно ли как-то отловить эту ошибку? Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 октября 2010

Попробуйте вызвать ActiveX.CoFreeUnusedLibraries перед выходом из приложения.Если вы используете Delphi ранее, чем 7.1, тогда посмотрите Quality Central Report #: 3272 , произошла ошибка.

2 голосов
/ 13 октября 2010

Ошибка, которую вы получаете, может иметь много причин. Это может быть проблема в вашем собственном коде или в элементе управления ActiveX. Например, ваш процесс может завершиться, но один из потоков все еще работает, запрашивая информацию или что-то в этом роде.
Скорее всего, вы не правильно освободите элемент управления ActiveX, что приведет к тому, что останется какой-то незаконченный бизнес. Запуск вашего приложения в отладчике может предоставить вам местоположение ошибки, но есть вероятность, что она немного сложнее. Иногда это просто случается ...
Вы создали небольшое консольное приложение для тестирования этого OCX? Или вы импортировали его как компонент и добавили в форму?
В случае консольного приложения убедитесь, что вы не используете глобальную переменную для хранения объекта OCX! Глобальные интерфейсные объекты не всегда освобождаются правильно.
Если вы используете компонент в форме, добавьте в эту форму событие OnClose и добавьте в него код, который должен очистить элемент управления OCX. Не освобождайте его, но посмотрите, есть ли у него функция «Закрыть», «Очистить» или «Завершить» или другой метод очистки, который необходимо вызвать. И снова, не используйте глобальные переменные для интерфейсных типов, таких как элементы управления OCX.

...