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