Adding the PzlPort to the application
Автор: Виктор Юхтенко
Elementary PzlStudio has no feature to create new executable applications projects, which contain the pzl-system embedded. But Elementary PzlStudio gives the possibility to include the pzl-system into any application project created before.
Invoking the operation
The form to perform the operation may be invoked via menu Tools/Add/Port to Executable.
The Option list includes:
- Vip Project File
- License Level
- Container Library
- Container Version
- Company
- Author
- Copyright
The editing of the option is performed in the right side of the table. The Editing supposed to be done by the explicit editing or it may be done by the pressing the button on the right side of the active field. Double clicking makes the same as pressing the button.
The operation is performed by clicking the button 'Add.
The button may be inactive if there is not enough data entered.
After the operation completion you may add pzl-system to any other application.
The button Close closes the form.
Performing the operation
If the operation complete, then the report will be sent to the Message Window. You will see there also the report regarding the changes, which has been made on the project.
Если Pzl-система уже была ранее включена в приложение, определяемое целевым проектом, то сообщение об этом появится и предложит продолжить включение или отказаться от выполнения операции.
Вы можете продолжить выполнение операции, если необходимо, например, изменить имя библиотеки или уровень лицензии.
Отчет о выполненных замещениях будет выведен в Окно сообщений среды
Возвратившись теперь к IDE, можно откомпилировать проект исполняемого приложения.
Пример проекта после компиляции приведен ниже
В результате работы Elementary PzlStudio добавился раздел $(SpbSolutions) со всеми ниже лежащими файлами.
Добавлен и вызов предиката инициализации Pzl-Системы pzlPort::init()
clauses run():- pzlPort::init(), %<--- Добавлен TaskWindow = taskWindow::new(), TaskWindow:show().
Теперь, если необходимо, в среде IDE, пользуясь текстовым редактором, можно добавить назначение файла реестра компонент:
clauses run():- pzlPort::init(), pzlPort::setComponentRegisterFileName("РегистрКомонент.pzr"), TaskWindow = taskWindow::new(), TaskWindow:show().
Целевой Проект
Целевой проект - это проект исполняемого приложения, в который должна быть добавлена pzl-Система. Целевой проект представляется файлом проекта системы программирования Visual Prolog c расширением .prj6.
Поэтому для включения pzl-Системы в проект исполняемого приложения необходимо установить имя проектного файла.
При первом открытии формы это поле пустое и непосредственное редактирование в нем невозможно. Нажатие на кнопку справа при активной строке вызывает диалог для выбора файла проекта.
Проект может быть любым - с пользовательским интерфейсом - на базе VPI или GUI, или без пользовательского интерфейса - консольный, в том числе и предназначенный для использования в качестве Web-приложения.
К моменту установки имени проектного файла проект должен существовать.
Если Вы создаете проект на основе pzl-технологии "с чистого листа", то необходимо средствами IDE создать новый проект, установив для него все необходимые свойства, затем проект построить и сохранить (Ctrl-S).
Если Ваш проект уже создан, то он уже готов для включения в него pzl-Системы.
Закрывать проект в IDE перед включением в него pzl-Системы не обязательно - достаточно сохранить его (Ctrl-S).
Версия Visual Prolog, которой создан проект, должна быть совместима с версией Elementary PzlStudio. Перечень версий системы Visual Prolog, с которыми совместима Elementary PzlStudio, указывается в About.
Уровень лицензии
Pzl-Система использует принцип лицензирования.
Лицензии различаются по уровням:
- Public - публичная
- Commercial - коммерческая
- Exclusive - эксклюзивная (исключительная)
- SuperExclusive
Уровень лицензии устанавливается:
- для главного приложения - библиотекой pzlPort_X.lib
- для pzl-Контейнера - библиотекой pzlContainer_X.lib
где X - идентификатор уровня лицензии.
Лицензию уровня Public может иметь только pzl-Контейнер. Главное приложение не может иметь лицензию уровня Public.
Соответствие уровня лицензии и идентификатора библиотеки приведено ниже:
- Commercial - pzlPort_C.lib
- Exclusive - pzlPort_EX.lib (X - персонифицирующий идентификатор)
- SuperExclusive pzlPort_SE.lib
Поэтому при включении pzl-Системы в главное приложение Вы должны установить уровень лицензии, которым должно обладать Ваше приложение. Выбор уровня лицензии однозначно определяет выбор имени pzl-библиотеки, которая будет включена в проект. В случае, если выбирается уровень лицензии Exclusive, то этому уровню может соответствовать множество библиотек уровня Exclusive.
PzlStudio предлагает значение по умолчанию - Commercial, которому соответствует библиотека PzlPort_C.lib.
При выборе уровня лицензии, Elemantary PzlStudio автоматически установливает имя библиотеки в поле Container Library (это поле не редактируется, а является справочным). Если выбирается уровень лицензии Exclusive, то Вам предлагается файловый диалог со списком имеющихся в Вашем распоряжении библиотек. Вы должны выбрать одну из библиотек, относящися к библиотекам уровня Exclusive. Если выбрана библиотека, не относящаяся к уровню Exclusive, то появляется сообщение
Библиотека Pzl-Системы
Это поле не редактируется и является справочным. Отражает имя библиотеки pzlPort_X.lib, соответствующее уровню лицензии главного приложения.
Версия Pzl-Контейнера
Версия Pzl-Конейнера является строкой, контролируемой только пользователем. Все, что делает Elementary PzlStudio с этой информацией - помещает ее в качестве значения константы pzlContainerVersion_C в файле PzlConfig.i после его создания.
interface iPzlConfig constants pzlContainerVersion_C="1.0;001". % Container Configuration constants end interface iPzlConfig
Атрибуты из базовых свойств
Последние три позиции в форме
- Company
- Author
- Copyright
устанавливаются в Базовых свойствах и здесь могут быть переопределены в случае, отличном от типового. Если Вы их здесь изменили, то значения этих параметров в Базовых свойствах останутся неизменными.