Предотвращение неявного импорта единиц измерения в пакетах Delphi

#delphi #compiler-construction #packages

Вопрос:

Есть ли способ запретить пакетам в Delphi неявно импортировать единицы, которые не перечислены в списке «Содержит»? Я ищу директиву компилятора, которая приведет к сбою сборки, если она попытается выполнить неявный импорт.

Проблемы возникают, когда вы устанавливаете пакет в среду IDE, которая неявно импортирует модуль A, а затем пытаетесь установить другой пакет, который действительно содержит модуль A, и среда IDE сообщает вам, что не может установить этот пакет, потому что модуль A уже содержится в первом пакете, даже если этого не должно быть!

Ответ №1:

В Delphi 2009 есть возможность превращать предупреждения в сбои. Это сделало бы то, что вы хотите сделать, насколько это возможно.

Чтобы предотвратить неявный импорт, вам необходимо импортировать его явно или удалить единицу, которая неявно импортирует его.

Комментарии:

1. Хорошо, я не могу его найти. Я думал, что это было там, но я могу ошибаться (иногда случается)

Ответ №2:

Если вы используете версию Delphi старше 2009 года, вы можете сделать так, чтобы предупреждение вызвало ошибку с помощью DDevExtensions (это бесплатно). После его установки перейдите в раздел Инструменты > DDevExtensions — Параметры и в разделе «Усовершенствования компилятора» установите флажок «Активный» и «Рассматривать предупреждения как ошибки». Вы можете добавить предупреждения, которые не хотите, чтобы они рассматривались как ошибки, в памятку ниже. К сожалению, в вашем случае, похоже, вы просто хотите, чтобы одно предупреждение рассматривалось как ошибка, поэтому вам придется добавлять в список практически все предупреждения, кроме предупреждения о неявном импорте, хотя в целом рекомендуется в любом случае разрешать все предупреждения компилятора, поэтому вы можете просто разрешить, чтобы все предупреждения вызывали ошибки.

Ответ №3:

Нет никакого способа превратить это предупреждение в ошибку. В Delphi 2009 вы можете заставить рассматривать все предупреждения как ошибки.

PS: Это ошибка в Delphi для .Net