442______________________________________________Глава 7

7.6 Пакеты

7.6.1 Общее описание концепции пакетов

Вы уже использовали пакеты в предыдущих разделах, создавая новые компо-
ненты. Но теперь давайте рассмотрим этот инструмент более подробно.

Одним из основных достоинств C++Builder является то, что в результате про-
ектирования создаются автономные выполняемые модули, т.е. приложение и все
его ресурсы размещаются в одном выполняемом файле. Причем по сравнению с ря-
дом других систем, позволяющих создавать автономные модули, размеры файлов
в C++Builder достаточно небольшие.

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

Пакеты (Packages) — это специальные динамически присоединяемые библио-
теки DLL, содержащие библиотеки визуальных компонентов и другие объекты,
функции, процедуры и т.д. Эти DLL позволяют вам создавать очень небольшие вы-
полняемые модули, обращающиеся за поддержкой к пакетам. Вы можете также
скомпилировать в пакеты свои собственные компоненты и библиотеки. Файлы па-
кетов имеют расширение .bpl (Borland package library), чтобы отличать их от обыч-
ных DLL.

Пакеты разделяются на два типа: пакеты времени проектирования и пакеты
времени выполнения.

Пакеты времени проектирования C++Builder вызывает в процессе проектиро-
вания. Эти пакеты используются для установки компонентов в палитре компонен-
тов среды разработки C++Builder или для создания специализированного редакто-
ра свойств для заказных компонентов. Пакеты времени проектирования не испо-
льзуются приложениями; они используются только самой средой C++Builder. Так
что на этих пакетах далее мы останавливаться не будем.

Пакеты времени выполнения содержат библиотеки визуальных компонентов
C++Builder. Ниже будет рассказано, как вы можете узнать состав отдельных паке-
тов и понять, какие пакеты используются в вашем приложении, а какие нет.

Вы можете добавить к C++Builder заказные пакеты, разработанные вами или
закупленные у независимых производителей. Заказные пакеты используются так
же, как и пакеты времени выполнения, и должны передаваться и устанавливаться
на компьютерах пользователей.

Так что у вас есть две альтернативы:

• создавать законченные, автономные выполняемые модули

• использовать поддержку пакетов времени выполнения

При использовании пакетов времени выполнения вы должны передавать поль-
зователю не только ваш выполняемый модуль, но и все пакеты времени выполне-
ния, которые используются им. За счет того, что большая часть кодов помещается
в этих пакетах, размеры ваших выполняемых модулей существенно сокращаются.
Например, модуль в 200 Кб может быть сокращен примерно до 20 Кб. Вы передае-
те пользователям один раз все пакеты и устанавливаете их на компьютерах клиен-
тов. А затем, когда вы делаете новые приложения, вам достаточно передавать то-
лько небольшие исполняемые модули.

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