Компиляция пакета
Как откомпилировать пакет, мы с вами уже знаем, осталось только рассмотреть некоторые особенности.
Для начала рассмотрим директивы компилятора, которые могут включаться в файл, пакета (*.DPK) и файлы модулей пакета (табл. 1.7).
Таблица 1.7. Директивы компилятора пакетов
|
|||
Директива |
Применение |
||
{$IMPLICITBUILD OFF} |
Служит для предотвращения перекомпиляции пакета. Применяется в тех случаях, когда пакет не изменяется |
||
{$G-} или { IMPORTEDDATA OFF} |
Применяется для предотвращения размещения модуля внутри пакета. Данная директива размещается внутри модуля. Желательно, чтобы этот модуль был напрямую связан с приложением |
||
{ $WEAKPACKAGEUNIT ON} |
Когда в файле модуля встречается эта директива, компилятор опускает данный модуль из BPL-файла и создает локальную копию модуля тогда, когда это будет необходимо (при вызове модуля из приложения или пакета). Модуль, имеющий такую директиву, называется слабым пакетом (weakly packaged) |
||
{$DENYPACKAGEUNIT ON} |
То же, что И {IMPORTEDDATA OFF} |
||
{$DESIGNONLY ON} |
Компилирует пакет как пакет design time |
||
{$RUNONLY ON} |
Компилирует пакет как пакет runtime |
||
Рассмотрим более подробно директиву { $WEAKPACKAGEUNIT }.
Слабый пакет применяется, когда пакет ссылается на отсутствующие библиотеки DLL. Данная директива применяется очень редко. Она позволяет обрабатывать специфические ситуации. Например, есть два компонента (в разных пакетах), которые обращаются к одному и тому же интерфейсному модулю DLL. Если приложение использует сразу оба компонента, то это приведет к загрузке двух экземпляров DLL, при этом могут возникнуть конфликты инициализации и использования глобальных переменных.
Примечание
Обратите внимание, что когда вы поставляете откомпилированную версию приложения вместе со всеми необходимыми пакетами, вам нужно учитывать, что должна совпадать версия пакета. То есть пакет, созданный в Delphi 5, не будет работать вместе с приложением, разработанным в Delphi 4.