Рассмотрим, как можно создать приложение без использования VCL. Запустите Delphi и создайте новый проект. Вначале нужно удалить визуальную форму, которую автоматически создает среда разработки. Для этого выберите пункт меню View ► Project Manager (Просмотр ► Менеджер проектов), и перед вами откроется окно Project Manager (рис. 2.5).

2.13.1. Уменьшение размера программы с помощью Win API

Рис. 2.5. Менеджер проектов

В этом окне в виде дерева представлены все модули, входящие в проект. В нашем случае пока есть только один модуль - Unitl. Выделите его и нажмите кнопку Del на клавиатуре или Remove на панели окна Project Manager Теперь сохраните проект под именем WinAPIProject

Весь код будем писать в исходном коде проекга. Для этого выберите пункт меню Project ► View Source (Проект ► Просмотреть исходный код). На данном эгапе проект содержит следующий код:

program WinAPIProject:
uses Forms :
{$R *.res}
begin '
Application.Initialize: Application.Run:
end.

Несмотря на небольшой код, размер результирующего файла будет большим. Откомпилируйте проект (комбинация клавиш Ctrl+F9). Теперь с помощью пункта меню Project ► Information forWinAPIProject (Проект ► Информация для WinAPI-Project) откройте окно информации о проекте (рис 2.6).

2.13.1. Уменьшение размера программы с помощью Win API

Рис. 2.6. Информация о проекте

Обратите внимание, что в строке Source Compiled области Program находится всего 13 строк откомпилированного исходного кода, а размер результирующего кода (строка Code Size) равен 309 408 байтов. При таком маленьком коде получился результирующий файл почти в 300 Кбайт.

Некоторые программисты считают, что для уменьшения кода и повышения производительности нужно отказаться от использования пакетов. Давайте рассмотрим этот вариант^ Выберите пункт меню Project ► Options (Проект ► Опции), и перед вами откроется диалоговое окно опций проекта. Перейдите на вкладку Packages (Пакеты) и установите флажок напротив строки Build with runtime packages в области Runtime packages (рис. 2.7).

Снова откомпилируем проект и посмотрим' информацию о нем. Для этого выберите вновь пункт меню Project ► Information for WinAPIProject. Можно заметить, что размер кода значительно уменьшился до 2 Кбайт (рис. 2.8).

Но если попытаться запустить этот файл на компьютере, где не установлен Delphi, то программа выдаст множество ошибок. Почему? В окне информации о проекте в области Packages Used (Используемые пакеты) перечислены необходимые для выполнения файлы. В данном случае это rtl70.bpl и vcl70.bpl. Это своеобразные динамические библиотеки, в них находится весь код VCL, без которого программа работать не будет. Получается, что мы не освободили программу от визуальной модели и она все еще используется.

2.13.1. Уменьшение размера программы с помощью Win API

Рис. 2.7. Диалоговое окно опций проекта, вкладка Packages

2.13.1. Уменьшение размера программы с помощью Win API

Рис. 2.8. Информация о проекте с параметром Build with runtime packages

Несмотря на небольшую программу, общий размер файлов, которые вы должны будете установить на компьютере пользователя, будет равен размеру ваших файлов плюс размер необходимых bpl-файлов. Эти файлы находятся в системной папке Windows/System32. Посмотрите на их размер. В данном случае два файла rtl70.bpl и vcl70.bpl занимают более 2 Мбайт, поэтому в действительности размер программы увеличился.

Давайте теперь снимем флажок напротив строки Build with runtime packages в свойствах проекта (см. рис. 2.7) и попробуем уменьшить размер файла другим способом. Удалите в исходном коде раздел uses и все, что находится между begin и end. У вас должен остаться только следующий код:

program WinAPIProject:
{$R *.res}
begin
end.

Откомпилируйте проект и посмотрите на информацию о нем (рис. 2.9).

2.13.1. Уменьшение размера программы с помощью Win API

Рис. 2.9. Информация о проекте без VCL

Вот теперь исполняемый файл занимает около 9 Кбайт и никакие дополнительные файлы не нужны.

Почему так резко изменился размер файла? Между begin и end у нас были вызовы методов объекта TAppl і cation. Для их использования нужно подключать в раздел uses модуль Forms. Этот модуль входит в состав VCL, и из-за него к программе подключается код, который на самом деле нами не используется.

Чтобы узнать, какие модули входят в VCL и сильно увеличивают размер, откройте любой файловый менеджер или проводник, и перейдите в папку Program Fi-les\Borland\Delphi7\Source. Если при инсталляции Delphi вы отказались от установки исходных кодов, то этой папки не будет, и ее надо искать на установочном диске. Если папка существует, то в ней будут исходные коды всех модулей, представленные в разных подпапках по типам. Все, что находится в VCL, подключать нежелательно. Большинство из этих модулей увеличат размер результирующего файла в несколько раз. А вот то, что находится в RTL, можно подключать без проблем.

Давайте проведем эксперимент. После строки program добавьте строку: uses button:

После компиляции проекта размер файла снова увеличится до 300 Кбайт. Это связано с тем, что модуль buttons входит в состав VCL."

А теперь замените эту строку на следующую:

uses windows:

При компиляции проекта без раздела uses размер результирующего файла равен 9 124 байтов, а после добавления модуля windows размер увеличивается только до 9 252 байтов. И это несмотря на то, что мы подключили модуль windows, который занимает на диске более мегабайта (самый большой файл в составе RTL, описывающий основные функции Win API).

ПРИМЕЧАНИЕ -

Исходный код рассмотренного здесь примера находится на компакт-диске в каталоге 5оигсе5\сп02\\Л/тАР1.

2.13. Программирование без VCL || Оглавление || 2.13.2. Пример приложения с использованием Win API


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31