Исключение во время закрытия программы "MouseTrackingTimerList.Count <> 0" - PullRequest
2 голосов
/ 25 августа 2010

У меня есть Delphi exe, созданный с помощью пакетов.Exe обрабатывает успешно, но при выключении я получаю ошибки.Я перестроил exe, а затем одну из библиотек DLL, которая вызывается exe с помощью программы регистрации ошибок MadExcept.Он отслеживает исключение «MouseTrackingTimerList.Count <> 0» в финализации модуля devexpress cxcontrols.Ничто в этом низкоуровневом устройстве не изменилось.Любые предложения о том, что может быть причиной этой ошибки?

1 Ответ

2 голосов
/ 25 августа 2010

Ну, вы не сказали, какое исключение оно вызывает, но одна вещь, с которой я столкнулся, случается с пакетами: если ваша финализация ссылается на что-то из другого пакета, и этот пакет уже выгружен, значит, ссылка плохая и вызовет нарушение прав доступа, а иногда и неверную операцию указателя.

Убедитесь, что MouseTrackingTimerList все еще доступен, и убедитесь, что это именно то, что он пытается сделать. Если вы работаете с глобальными интерфейсными ссылками в модуле, он вставит скрытый код завершения, чтобы очистить их, и если , то ссылается на что-то, что является частью другого пакета, вы можете получить те же проблемы.

Чтобы избежать этого, убедитесь, что все глобальные ссылки на интерфейсы из других пакетов установлены на nil до начала финализации программы, и убедитесь, что ваши разделы финализации не ссылаются ни на какие объекты, код которых находится в другой пакет, который может быть выгружен до текущего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...