2010-10-13 7 views
1

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

«application.exe больше не работает -> Поиск в Интернете для решения и закрыть программка -> закрыть программка

детали Проблема: имя проблемного события : APPCRASH ...»

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

+0

Информация об этом элементе управления ActiveX может быть найдена по адресу http://www.qlikview.com/ ... –

+0

Благодарим вас за этот полезный совет. Я проверил этот сайт много раз, и никакой интересной информации об элементе управления ActiveX не обнаружено. – flinkiy1

+0

Ну, другие могут не знать об управлении aciveX, поэтому для них это также полезно. :-) –

ответ

2

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

+0

Привет, thansk для чаевых. Я использовал ocx как компонент и опустил его на форму. Я пробовал ваши советы, но безуспешно. Я уверен, что это ошибка в самом элементе управления ActiceX. Когда я создаю объект управления во время выполнения, а затем вызываю бесплатный метод, я получаю ту же ошибку, что и при закрытии приложения ... – flinkiy1

2

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

+0

Привет, благодарю этот совет - я попробовал, но безуспешно :( – flinkiy1

 Смежные вопросы

  • Нет связанных вопросов^_^