Какие-нибудь идеи для Delphi XE могут случайно не загружать дизайн пакета? - PullRequest
6 голосов
/ 20 октября 2010

Я создал пакет дизайна с регистрацией компонента (сам компонент находится во время выполнения) и некоторыми элементами меню IDE.

Если я щелкну пункт «Установить» в контекстном меню из диспетчера проектов -пакет будет загружен и работает нормально (всегда).

Если я закрою IDE и перезапущу его - пакет может быть загружен или может не загружен.Кажется, случайно.Но обычно он не загружается, а загружается.

Если я захожу в Компонент / Установить пакеты - я вижу свой пакет в списке, флажок установлен, кнопка «Компоненты» показывает компоненты в моем пакете, но пакетсам исполняемый файл даже не загружается в IDE!(Я подтвердил это через Process Explorer).Переустановка (удаление пакета -> Ok -> Компонент / Установить пакеты -> Add -> Ok) не помогает.Но удаление / установка из контекстного меню проекта в Диспетчере проектов - всегда помогает.

Я добавил OutputDebugString в раздел инициализации каждого моего модуля в пакете.И я обнаружил, что разделы инициализации просто не запускаются.

Пакет времени выполнения находится в той же папке, что и пакет времени разработки.Папка находится в переменной окружения PATH.Я также попытался поместить пакеты в папку Bin Delphi.Нет сообщений об ошибках.Никаких странных / диагностических OutputDebugStrings.

Есть идеи?

PS У меня такое поведение на 2 разных машинах.Один - Win7, другой - WinXP SP 2.

PPS Я не смог воспроизвести это поведение на Delphi 7. Один и тот же пакет, перекомпилированный для загрузок D7 всегда.

1 Ответ

9 голосов
/ 20 октября 2010

Я обнаружил, что в новых Delphi есть функция отложенной загрузки пакетов. Это должно оптимизировать скорость запуска, когда пакеты не загружены, когда они не нужны.

Это прекрасно работает для пакетов компонентов, но портит удовольствие от пакетов, которые (например) изменяют меню IDE.

Вы можете указать IDE всегда загружать ваш пакет, вызвав ForceDemandLoadState (dlDisable) из Зарегистрируйте процедуру.

P.S. Почему вы всегда находите ответ самостоятельно почти сразу после публикации вопроса? : D

...