Когда мы пишем и компилируем приложение Delphi, мы обычно генерируем исполняемый файл - автономное приложение Windows. В отличие от Visual Basic, например, Delphi производит приложения, упакованные в компактные исполняемые файлы, без необходимости громоздких библиотек времени выполнения (DLL).
Попробуйте это: запустите Delphi и скомпилируйте этот проект по умолчанию с одной пустой формой, это даст исполняемый файл размером около 385 КБ (Delphi 2006). Теперь перейдите в Project - Options - Packages и установите флажок «Построить с помощью исполняемых пакетов». Скомпилируйте и запустите. Вуаля, размер exe сейчас составляет около 18 КБ.
По умолчанию «Сборка с помощью пакетов времени выполнения» не отмечена, и каждый раз, когда мы создаем приложение Delphi, компилятор связывает весь код, необходимый вашему приложению, для запуска непосредственно в вашем приложении. исполняемый файл приложения. Ваше приложение является автономной программой и не требует никаких вспомогательных файлов (например, DLL) - вот почему Delphi exe такие большие.
Один из способов создания меньшие программы Delphi это воспользоваться «библиотеками пакетов Borland» или BPL.
Что такое пакет?
специальная библиотека динамических ссылок, используемая приложениями Delphi
Пакеты позволяют нам размещать части нашего приложения в отдельных модулях, которые могут совместно использоваться несколькими приложениями. Пакеты также предоставляют средства для установки (пользовательских) компонентов в VCL-систему Delphi.
Следовательно, в основном Delphi может создавать пакеты двух типов:
- Пакеты времени выполнения - обеспечивают функциональность, когда пользователь запускает приложение - они работают так же, как стандартные библиотеки DLL.
- Пакеты времени разработки - используются для установки компонентов в Delphi IDE и создавать специальные редакторы свойств для пользовательских компонентов.
С этого момента эта статья будет касаться пакетов времени выполнения и того, как они могут помочь программисту Delphi.
Один неверный мит: вы не обязаны быть Разработчик компонентов Delphi воспользоваться пакетами. Начинающие программисты на Delphi должны попробовать поработать с пакетами - они лучше поймут, как работают пакеты и Delphi.
Когда и когда не использовать пакеты
DLL чаще всего используются как наборы процедур и функций, которые могут вызывать другие программы. Помимо написания библиотек DLL с пользовательскими процедурами, мы можем поместить полную форму Delphi в библиотеку DLL (например, форму AboutBox). Другой распространенный метод - хранить в DLL только ресурсы. Более подробную информацию о том, как Delphi работает с DLL, можно найти в этой статье: DLL и Delphi.
Прежде чем перейти к сравнению библиотек DLL и BPL, мы должны понять два способа связывания кода в исполняемом файле: статическое и динамическое связывание.
Статическое связывание означает, что при компиляции проекта Delphi весь код, который требуется вашему приложению, напрямую связывается с исполняемым файлом вашего приложения. Полученный exe Файл содержит весь код всех модулей, которые участвуют в проекте. Вы можете сказать, что слишком много кода. По умолчанию используется предложение для нового списка модулей формы более 5 единиц (Windows, Messages, SysUtils, ...). Однако компоновщик Delphi достаточно умен, чтобы связать только минимум кода в единицах, фактически используемых в проекте. Со статическим связыванием наше приложение является автономной программой и не требует никаких пакетов поддержки или библиотек DLL (пока забудьте о компонентах BDE и ActiveX). В Дельфи статическое связывание по умолчанию.
Динамическое связывание это как работать со стандартными библиотеками DLL. То есть динамическое связывание обеспечивает функциональность для нескольких приложения без привязки кода непосредственно к каждому приложению - все необходимые пакеты загружаются в во время выполнения. Самое важное в динамическом линковании - это то, что загрузка пакетов вашим приложением происходит автоматически. Вам не нужно писать код для загрузки пакетов или менять код.
Просто установите флажок «Построить с помощью пакетов времени выполнения», найденный в Project | Диалоговое окно параметров. В следующий раз, когда вы создадите свое приложение, код вашего проекта будет динамически связан с пакетами времени выполнения, а не со статически связанными модулями в вашем исполняемом файле.