Главная » Delphi » Пакеты Delphi

0

Для чего предназначены пакеты?

Использование пакетов вызвано рядом  причин. О трех  наиболее важных  из них и пойдет  речь в следующих разделах.

Сокращение размера кода

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

Дробление приложений и уменьшение их размеров

Как известно, многие  приложения распространяются по Internet в виде пол номасштабных версий,  демонстрационных версий или  в  виде  пакетов обновле ний к уже существующим  приложениям. Представьте себе преимущества такого режима загрузки:  пользователь получает  из Internet лишь дополнения к приложе нию,  тогда как основная часть  этого  приложения (установленная ранее) постоян но находится на его компьютере.Разбив  приложение на  пакеты, можно  предоставить пользователям право  полу чать обновления лишь для тех частей приложения, которые им действительно нужны. Следует,  однако, принять во  внимание несколько моментов, касающихся взаимоот ношений версий пакетов и приложений. Но об этом — чуть позже.

Хранение компонентов

Одной из наиболее распространенных причин использования пакетов является рас пространение компонентов, созданных сторонними производителями. Те, кто занима ется поставкой компонентов, безусловно знают,  как создавать пакеты. Кстати, в пакеты можно  помещать даже некоторые элементы времени разработки, такие  как редакторы свойств  и компонентов, мастера и эксперты. Все эти инструменты периода разработки распространяются в виде пакетов.Пакеты или DLL

Использование DLL для хранения форм администрирования серверов приложений приводит к наличию в DLL его собственной копии модуля Forms.pas. Это приводит, в свою очередь, к серьезной ошибке, связанной с обработкой дескрипторов окна Windows, содержащихся внутри DLL. Когда DLL выгружается, ссылка на дескриптор окна все еще поддерживается операционной системой. Следующее сообщение, по- ступившее из очереди для всех окон верхнего уровня, вызовет такую ошибку в прило- жении, которая способна привести к аварийному завершению работы операционной системы. Использование пакетов вместо DLL предотвращает возникновение этой про- блемы, поскольку пакеты обращаются к копии Forms.pas основного приложения, и сообщения из очереди могут передаваться приложению без проблем.

Когда не нужно использовать пакеты?

Не  следует  использовать пакеты времени выполнения,  если  нет  уверенности  в том,  что  их  будут использовать и другие  приложения. Иначе эти  пакеты займут  на диске места больше, чем код, скомпилированный в один  исполняемый файл.  Почему так получается? При  создании приложения среднего размера с использованием паке тов исполняемый файл  уменьшается приблизительно  с 200 Кбайт  до 30, и может  по казаться, что на диске удалось сохранить 170 Кбайт  свободного пространства. Но при распространении этого  приложения к нему добавляются используемые им пакеты, в том числе  пакет Vcl60.dcp, размером почти 2 Мбайта.  Естественно, это совсем не та экономия пространства на диске, на которую  стоит рассчитывать. По нашему мнению, пакеты следует применять только  в том случае, если ими будут пользоваться несколь ко исполняемых файлов. Помните, что все эти рассуждения относятся лишь к пакетам времени  выполнения. Разработчики  компонентов,  напротив,  должны   обеспечить своим  пользователям пакет  разработки, содержащий компонент, который будет дос тупен в интегрированной среде разработки Delphi.

Типы пакетов

Существует четыре типа пакетов, которые можно создать и использовать.•  Пакеты  времени выполнения (runtime package). Такие  пакеты содержат код, компоненты и другие  ресурсы, которые используются приложением во время выполнения. Если приложение создается в расчете на определенный пакет времени выполнения, то  в случае  отсутствия этого  пакета  приложение рабо тать не будет.

•  Пакеты  разработки (design package). Эти  пакеты содержат компоненты, ре дакторы свойств или  компонентов, эксперты и все прочие элементы, необхо димые  для разработки приложения в интегрированной среде  Delphi. Данный тип  пакетов используется только  в среде  разработки Delphi  и никогда  не рас пространяется вместе с создаваемым приложением.

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

•  Пакеты,  не являющиеся ни пакетами времени выполнения, ни пакетами раз работки. Эта редкая  разновидность пакетов служит для использования другими пакетами. Они не предназначены ни для непосредственного использования другими  приложениями, ни  для применения в среде  разработки. Таким  обра зом, пакеты могут использовать или включать в себя другие пакеты.

Файлы пакетов

В  табл. 14.1  приведено описание типов файлов  пакетов в соответствии с их  рас

ширением.

Таблица 14.1. Файлы пакетов

Расширение                Тип файла                                  Описание

.dpk                           Исходный файл пакета         Этот файл создается при запуске редактора пакетов. Можно  считать его разновид ностью файла проекта Delphi  .dpr

.dcp      Символьный  файл   паке та  времени выполнения и разработки

Скомпилированная версия пакета  с сим вольной информацией пакета  и его  моду лей. Кроме  того,  в нем содержится заголо вок с информацией, необходимой среде разработки Delphi

Расширение                Тип файла                                  Описание

Окончание табл. 14.1..dcu     Скомпилированный модуль

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

Это пакет времени выполнения и разра ботки, эквивалент библиотеки DLL Win dows. Если это пакет времени выполнения, то необходимо распространять его вместе с теми приложениями, которые его ис пользуют. Если это пакет разработки, то он будет распространяться среди программис тов, использующих его для написания про грамм,  вместе  со своим  “собратом”  време ни выполнения. Помните: если не пред полагается распространять исходный код самого проекта, то можно  предоставить соответствующий ему файл .dcp

Использование пакетов времени выполнения

Чтобы использовать пакеты времени выполнения в разрабатываемых приложени ях Delphi, достаточно установить флажок Build with Runtime Packages (Скомпоновать с  пакетами времени  выполнения)  во  вкладке   Packages диалогового  окна   Project Options. При  компоновке приложения с этим  параметром, вместо  статического под ключения всех модулей  в файл  .exe или  .dll, оно  получит  возможность динамиче ски  подключать соответствующие пакеты времени выполнения.  В результате  полу чится  более  стройное приложение. Однако  не  забывайте при  его  распространении передавать пользователям и необходимые пакеты.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

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