Установка компонента в dclusr.dpk нарушает работу других компонентов

Сначала я установил библиотеку RX 2.75 и некоторые другие.
Затем я пытаюсь установить пользовательский (не мой) компонент TMyLookupEdit, который является производным от TRxLookupEdit.
Я делаю это через главное меню -> Компонент -> Установить компонент ... < / i> и выберите файл .pas компонентов

И когда Delphi пытается перестроить dclusr.dpk, я получаю что-то вроде этого (не помню, для его воспроизведения я не нашел другого способа, кроме как переустановить Delphi):

Can't load package c:\program files\borland\delphi6\Projects\Bpl\dclrx6.bpl.
Cannot load package 'RxCtl6.'  It contains unit 'FileUtil,'which is also contained in package 'RxCtl660'

Затем IDE сообщает мне, что MyLookupEdit компонент установлен и около 100 других компонентов не установлены. Все компоненты RX удалены из палитры

Я уверен, что установил только RxCtl6, а не RxCtl6 60. Но сейчас они оба находятся в C: \ Program Files \ Borland \ Delphi6 \ Projects \ Bpl. Единственная подсказка, которую я имею, это то, что #define в файле dclusr.dpk (см. Ниже)

Как я могу заставить RX и этот компонент работать вместе?


Вот мой dclusr.dpk (большинство #defines опущены):

{$LIBSUFFIX '60'}

requires
  rtl,
  vcl,
  designide,
  vcldb,
  dbrtl,
  vclx,
  VclSmp,
  RxCtl6,
  RxDB6;

contains
  RegGrid in '..\..\..\..\_work\Delphi\__Install\__Components\No-package components\RegGrid\RegGrid.pas',
  Tabenter in '..\..\..\..\_work\Delphi\__Install\__Components\No-package components\TABENTER.PAS',
  MyLE in '..\..\..\..\_work\Delphi\__Install\__Components\No-package components\MyLookupEdit\MyLE.pas';

end.

Решение

  1. Удалите {$ LIBSUFFIX '60'} из dclusr.dpk
  2. Удалить файл dclusr60.bpl
  3. Восстановить dclusr.dpk

Большое спасибо Сергу за направление!


person Alexander Malakhov    schedule 01.12.2010    source источник
comment
b.t.w этот MyLookupEdit компонент выглядит довольно бесполезным, поэтому решением может быть просто переписать проекты, чтобы не использовать его. Но он был введен в наши проекты около 7-8 лет назад, и я поддерживаю их только 6 месяцев, поэтому я не уверен, какое влияние это окажет.   -  person Alexander Malakhov    schedule 01.12.2010
comment
Может, стоит включить этот компонент в комплект RX, модуль RxLookup?   -  person Alexander Malakhov    schedule 01.12.2010


Ответы (1)


Я уверен, что установил только RxCtl6, а не RxCtl660. Но они оба находятся в C: \ Program Files \ Borland \ Delphi6 \ Projects \ Bpl

Сосуществование RxCtl6.bpl и RxCtl660.bpl означает, что ваш пакет RxCtl6 каким-то образом был скомпилирован с директивой {$ LIBSUFFIX '60'} и без нее.

У меня возникла аналогичная проблема после установки обновленного пакета компонентов TeeChart, в результате чего пакеты, зависящие от TeeChart, стали неработоспособными. В качестве быстрого решения вы можете попробовать заменить RxCtl6 и RxDB6 на RxCtl660 и RxDB660 в «обязательном» разделе. Также проверьте источники RX * .dpk на предмет наличия директивы {$ LIBSUFFIX '60'} - на самом деле проблема связана с директивой {$ LIBSUFFIX '60'}.

Не переустанавливайте Delphi, если некоторые пакеты исчезают - Delphi хранит информацию об установленных пакетах в реестре, поэтому

  • попробуйте исправить проблему в IDE; если это не поможет
  • попробуйте исправить проблему в реестре
person kludg    schedule 01.12.2010
comment
Спасибо за ответ. Какое облегчение, что кто-то еще столкнулся с этим! Замена 6 на 660 файлов не работает. Он говорит, что требуемый пакет «RxCtl660» не найден. Завтра я попытаюсь избавиться от 660 файлов и записей реестра, отключить {$ LIBSUFFIX} в dclusr.dpk и переустановить этот небольшой компонент. Я сообщу о своем прогрессе здесь - person Alexander Malakhov; 01.12.2010