Повторяющиеся модули в Delphi по имени, на которые ссылаются компоненты, проблема с компиляцией

Мы используем несколько пакетов компонентов от разных поставщиков, и у двух из них есть модуль «regexp.pas», доступный внутри их структуры каталогов.

Теперь проблема в том, что независимо от того, в каком порядке мы их компилируем, один из них жалуется на то, что модуль компилируется с неправильной версией различных других модулей.

Есть ли способ справиться с этим правильно?


person Lasse V. Karlsen    schedule 20.05.2009    source источник


Ответы (3)


  1. Вы должны убедиться, что у вас есть только одна версия этого модуля
  2. Удалите все dcu (обоих поставщиков), чтобы принудительно перекомпилировать весь исходный код.
  3. Полностью удалите пакеты двух поставщиков (убедитесь, что все следы каждого из них удалены везде)
  4. Перекомпилируйте и установите по одному.
person Johan Bresler    schedule 20.05.2009
comment
Вот чего я боялся. К сожалению, эти два модуля имеют одно и то же название, но не одинаковое содержание, даже не разные версии одного и того же модуля, они совершенно разные. Мы пошли по пути попытки переименовать один из них и просто жить с дублирующими кодовыми базами для этого. - person Lasse V. Karlsen; 20.05.2009
comment
Просто из интереса, почему это было принято в качестве ответа, когда, насколько я могу судить, это на самом деле не правильный ответ в этом случае? Я думаю, что ответ Барри Келли должен удостоиться этой чести. - person Deltics; 29.03.2010
comment
Потому что это сработало, потому что это процесс, который я всегда использовал, и его подробное пошаговое описание. Пункт 1 также совпадает с ответом Барри. - person Johan Bresler; 30.03.2010

Никакие два модуля не могут иметь одно и то же имя в любом полностью связанном и загруженном исполняемом файле Delphi, независимо от того, связаны ли модули статически или динамически через пакеты. Как вы пришли к выводу, вам придется переименовать один или другой.

person Barry Kelly    schedule 20.05.2009
comment
Да, он работал хорошо, в том смысле, что он компилируется и работает, как и ожидалось. Думаю, это лучшее, что мы можем сделать, так как мы не собираемся менять кодовую базу, чтобы использовать только один из модулей. - person Lasse V. Karlsen; 20.05.2009

Вы можете использовать этот обходной путь.

Как уже было сказано, вы не можете загрузить пакеты обоих поставщиков в IDE вместе.

Однако, если они нужны вам по одному, вы можете запустить два разных профиля IDE с помощью переключателя командной строки "-r", присвоив каждому профилю собственное имя. . Затем вы можете запустить Delphi, используя первый профиль, и установить первый из двух «конфликтующих» пакетов, закрыть IDE и запустить Delphi со вторым профилем, а затем установить другой пакет.

Создайте ярлык для каждого профиля, а затем запустите Delphi, выбрав профиль, который загружает пакет, необходимый для управления конкретным проектом.

С уважением, ~/|/|arco.

person Community    schedule 21.05.2009
comment
Прочитайте собственно вопрос. Ваш обходной путь не будет работать и не отвечает на заданный вопрос. - person Ken White; 22.05.2009