Пакет компонентов времени выполнения требует дальнейшего рефакторинга - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть набор компонентов в разделенных пакетах времени исполнения / разработки для Delphi XE2. Я имел это в течение долгого времени и не было никаких проблем, как то, что у меня сейчас. Я добавил новый элемент управления под названием TJDWebcam. Все было хорошо, пока я не решил изменить имя типа на TJDWebcamView. Я выполнил поиск / замену в главном модуле источника, где у меня есть этот класс, и сделал некоторые другие изменения, в том числе и в модуле регистрации пакета времени разработки.

Проблема в том, что теперь, когда я собираю пакет времени выполнения, я получаю сообщение о том, что он требует сам (требуется пакет JDComponents, который точно такой же). Я удалил пакет и попытался пересобрать, но та же ошибка.

Вот конкретное сообщение, которое я получаю ...

Add JDComponents.
JDComponents contains implicit unit(s) uPickFolder, JDCommon, 
JD.VSample, JD.VFrames, NativeJpg.

... и все единицы в пакете, которые могут быть там. Проблема не начиналась, пока я не изменил имя типа этого элемента управления и не перекомпилировал.

Теперь, если я проигнорирую это сообщение и нажму «Отмена», все будет нормально работать, несмотря на предупреждение о том, что оно «может вызвать ошибки».

По каким причинам это может быть сделано? И как это исправить? Я бы не хотел публиковать всю свою библиотеку компонентов для отладки.

PS - Моя библиотека использует суффикс версии delphi (160 для XE2) и собственный суффикс версии (2), поэтому имена пакетов на самом деле читаются как JDComponents.160.bpl.2 и DCLJDComponents.160.bpl.2.


UPDATE

Мне удалось установить его, см. Мой ответ ниже.

1 Ответ

1 голос
/ 26 февраля 2012

После выполнения этих следующих шагов мне удалось восстановить его успешно:

  • Деинсталлировать пакет
  • Удалил все DCU, пакет и все, что скомпилировано
  • Перезагрузка ПК
  • Перестройка всего

Таким образом, источник проблемы все еще неизвестен, но, скорее всего, где-то в скомпилированном файле (DCU или пакете)все еще ссылался на это старое имя типа до того, как оно было изменено.Когда с этим столкнулся компилятор, он запутался и сказал мне, что мне нужно включить этот другой пакет, который на самом деле является тем же пакетом.

...