Установка компонента в dclusr.dpk ломает другие компоненты - PullRequest
3 голосов
/ 01 декабря 2010

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

И когда 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 других компонентов un установлены. Все компоненты 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

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

1 Ответ

1 голос
/ 01 декабря 2010

Я уверен, что я установил только 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; если это не поможет
  • попытаться исправить проблему в реестре
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...