“Неявно импортируется” всегда плохая вещь в пакетах Delphi?

Вы могли сделать:

[dsm@localhost:~]$ perl -e 'print "\0" x 100' > filename.ext

, Где Вы заменяете 100 числом байтов, Вы хотите записанный.

19
задан Community 23 May 2017 в 12:22
поделиться

2 ответа

Вот проблема:

Вы можете иметь только одну копию модуля в вашей программе. Если вы попытаетесь загрузить один и тот же модуль дважды через пакеты, это вызовет исключение, и пакет не загрузится во второй раз. Способ избежать этого - структурировать ваши пакеты так, чтобы ни один модуль не использовался более чем в одном из них.

Код для каждого модуля, который вы компилируете, должен быть в пакете. Компилятор запустится со всеми модулями, которые вы объявите в разделе , содержит , но любые другие модули, используемые этими модулями, также должны быть скомпилированы, чтобы они были доступны, если только эти модули не содержатся в другом пакете, который указан в , требуется . Эти дополнения являются «неявно импортированными» единицами. Проблема в том, что они импортированы неявно , явно не указано в разделе содержит раздел , где они будут удобно отображаться в диспетчере проектов справа. Это означает, что вы можете не заметить, что ваше устройство находится в пакете, и в конечном итоге положить его в другой. Затем, когда вы пытаетесь запустить свою программу и загрузить пакеты, все ломается. Вот почему компилятор предупреждает вас об этом.

Это предупреждение, а не ошибка по какой-то причине. Пока вы понимаете, как работает система, использовать неявный импорт технически безопасно. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто официально добавить их и избавить себя от хлопот.

Будет удобно отображаться в Диспетчере проектов справа. Это означает, что вы можете не заметить, что ваше устройство находится в пакете, и в конечном итоге положить его в другой. Затем, когда вы пытаетесь запустить свою программу и загрузить пакеты, все ломается. Вот почему компилятор предупреждает вас об этом.

Это предупреждение, а не ошибка по какой-то причине. Пока вы понимаете, как работает система, использовать неявный импорт технически безопасно. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто официально добавить их и избавить себя от хлопот.

Все будет удобно в Диспетчере проектов справа. Это означает, что вы можете не заметить, что ваше устройство находится в пакете, и в конечном итоге положить его в другой. Затем, когда вы пытаетесь запустить свою программу и загрузить пакеты, все ломается. Вот почему компилятор предупреждает вас об этом.

Это предупреждение, а не ошибка по какой-то причине. Пока вы понимаете, как работает система, использовать неявный импорт технически безопасно. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто официально добавить их и избавить себя от хлопот.

и кладу его в другой. Затем, когда вы пытаетесь запустить свою программу и загрузить пакеты, все ломается. Вот почему компилятор предупреждает вас об этом.

Это предупреждение, а не ошибка по какой-то причине. Пока вы понимаете, как работает система, использовать неявный импорт технически безопасно. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто добавить их официально и избавить себя от хлопот.

и кладу его в другой. Затем, когда вы пытаетесь запустить свою программу и загрузить пакеты, все ломается. Вот почему компилятор предупреждает вас об этом.

Это предупреждение, а не ошибка по какой-то причине. Пока вы понимаете, как работает система, использовать неявный импорт технически безопасно. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто добавить их официально и избавить себя от хлопот.

s технически безопасно использовать неявный импорт. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто добавить их официально и избавить себя от хлопот.

s технически безопасно использовать неявный импорт. Просто помните, что эти единицы попадают в пакет, объявляете вы их или нет. Но опять же, поскольку они попадают туда независимо от того, объявляете вы их или нет, вероятно, проще просто добавить их официально и избавить себя от хлопот.

30
ответ дан 30 November 2019 в 03:20
поделиться

+1 за ответ Мейсона . Место, где неявно импортированные модули становятся проблемой, находится в большом проекте, где становится экспоненциально сложнее отслеживать модули, которые связаны откуда бы то ни было.

Я считаю, что лучший способ на сегодняшний день - это иметь папку для каждого пакета , и эта папка содержит все файлы пакета. Если я вижу предупреждение «неявный импорт», я либо добавляю требуемый пакет, либо добавляю модуль в пакет. Таким образом, все блоки указаны в пакете, который их содержит, и все они находятся в одной папке. Я никогда не добавляю папки в путь поиска, потому что каждый проект знает обо всех своих файлах напрямую.

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

10
ответ дан 30 November 2019 в 03:20
поделиться