Установка компонента в dclusr.dpk ломает другие компоненты
Сначала я установил библиотеку RX 2.75 и некоторые другие.
Затем я пытаюсь установить пользовательский (не мой) компонент TMyLookupEdit
который получен из TRxLookupEdit
,
Я делаю это через главное меню -> Компонент -> Установить компонент... и выбираю .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, а не RxCtl660. Но теперь они оба находятся в 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.
Решение
- Удалить {$LIBSUFFIX '60'} из dclusr.dpk
- Удалить файл dclusr60.bpl
- Перестройте dclusr.dpk
Большое спасибо Сергею за указания!
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; если это не поможет
- попробуйте исправить проблему в реестре