Компиляция пакета
Как откомпилировать пакет, мы с вами уже знаем, осталось только рассмотреть некоторые особенности.
Для начала рассмотрим директивы компилятора, которые могут включаться в файл, пакета (*.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.
Глава 3 Содержание Глава 5
Содержание раздела