Компонент TSomething не может быть зарегистрирован пакетом что-то. - PullRequest
3 голосов
/ 19 октября 2011

Одна из самых страшных ошибок с пакетами времени разработки в Delphi, которая означает, что пакеты, которые регистрируют установку новых компонентов в вашу палитру, заключается в следующей ошибке:

Компонент TSЧто-то не может быть зарегистрировано пакетомSome_design.bpl, потому что он уже был зарегистрирован пакетом что-то, что-то design.bpl .?

Я уже много знаю:

  1. Если у вас было две копииBPL и вы загрузили один, но другой пакет, который зависит от BPL, пытается загрузить другой, и он пытается загрузить вторую копию, вы получаете эту ошибку.

  2. Иногда встречаются странныевещи о неявном импорте, которые требуют от вас исправить неявные предупреждения об импорте, очистить все ваши артефакты (dcu, dcp и т. д.) и повторить попытку, и это исчезнет.

Однако вЕсли НИКОГДА из вышеперечисленного не решает проблему, как вы решаете проблему?

Мне кажется, что на моем жестком диске есть только одна копия этого BPL, иАт указывает на него, и каким-то образом пакет выполняет «скрытную» фоновую загрузку пакета, прежде чем IDE сможет его увидеть, а затем сама IDE пытается загрузить пакет, который был загружен в память IDE, используявызов Win32 LoadLibrary и вторая загрузка, в которой IDE пытается загрузить этот пакет, вызывает сбой.

Я ищу:

A.Как выяснить, что не так, и как это исправить.

B.Способы избежать этого (защитные практики или инструменты для сканирования ваших пакетов или конфигурации Delphi IDE.)

C.Обходные.Например, я обнаружил, что запуск Delphi ide (bds.exe) с параметром -np, затем загрузка моего проекта позже, а не во время начального запуска IDE, иногда решает проблему, задерживая открытие проекта / формы до более позднего времени., когда Delphi IDE кажется более стабильным.

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Во-первых, вы работаете в XE?Я боролся с этим после того, как сделал компонент для замены календаря в начале этого года.Я до сих пор не совсем уверен, что это исправить.Но я считаю, что ошибка связана с путями.Убедитесь, что он не включен дважды, так как он виден для двух определений пути.

Если он используется, вы сможете увидеть, какие пакеты включены.

Надеюсь, вы сможете разобраться в этом,Мне все еще интересно, что я тогда сделал.

0 голосов
/ 22 августа 2017

Со всеми другими аспектами, которые являются правильными (пути, количество копий и т. Д.) ... Я испытываю эту проблему, когда мой пакет IDE зависит от других (сторонних) пакетов, уже установленных в IDE. КЛЮЧ предназначен для загрузки другого пакета, чтобы при сборке он распознавал правильное «Требуется» и запускал диалоговое окно, чтобы вы согласились добавить его. Вы можете загрузить другой пакет, добавив пустой новый проект вместе с вашим пакетом в Диспетчере проектов и добавив некоторые сторонние элементы управления в форму. Теперь, когда вы компилируете свой пакет, он должен увидеть другой пакет и включить его в список Требуется.

Полагаю, вы могли бы добавить ForceDemandLoadState (dlDisable) в сторонний пакет, но кто захочет?

...