Class PzlPort
Автор: Виктор Юхтенко package PzlPort
The class pzlPort is the core of the VpPuzzle system and supports the use of pzl-components. This class must be included to the project, which generates the main executable applicaion(.EXE).
The calls of the predicates of the class PzlPort are possible only from the classes of the main executable applicaion project. Components placed to the dll-containers can not make a calls of the predicats of the class PzlPort.
Predicate summary
classInfo.
get the information regarding the class |
init:().
Initialization of the VpPuZzle system |
setComponentRegisterFileName:(string ComponentRegisterFileName).
Set the name of the component registry file |
isInitialized:() determ.
Checking of the initialization status of the VpPuZzle system |
Additionally used resources
The mandatory use:
- the pzlPort_XX.lib library must be used, where XX - license qualifier. The library in fact contains the implementation of the class PzlPort and also the library includes the implementation of the handling of the pzl-container of the main executable application.
- the package pzlConfig must be used. The package PzlConfig participates in the initialization procedure.
Predicate details
core::classInfo/0
classInfo:().
get the information regarding the class
Description
The predicate is the tipical predicate, which is generated when any class generated automatically by the IDE of the Visual Prolog System
Exceptions
No
Example
No
pzlPort::init/0
init:().
Initialization of the VpPuZzle system
Description
The predicate must be the first predicate, which is used while the accessing to the Pzl-system. It must be called only once. After initialization the calls to other classes of the Pzl system become possible.
The initialization of the pzl-system may be performed immidiately after the main applicaion start. It also may be performed at any moment when the pzl-system is expected to be used. The deinitialization of the pzl-system is impossible.
The repetitions of the initialization are ignored.
Exceptions
No
Example
clauses run():- pzlPort::init(), TaskWindow = taskWindow::new(), ...
pzlPort::setComponentRegisterFileName/1
setComponentRegisterFileName:(string ComponentRegisterFileName).
Set the name of the component registry file
Description
The file ComponentRegisterFileName is one of the places, where the information regarding the pzl-components at the given computer is stored. Другим хранилищем является реестр Windows. При поиске информации о месте расположения компоненты, файл регистрации используется первым. Если файла нет или компонента в нем не зарегистрирована, то поиск продолжается в системном реестре Windows.
Информация в файле-реестре компонент хранится в формате термов, принятом в системе Visual Prolog (save-consult). Прежде чем компонента может быть использована на данном компьютере, она должна быть на нем зарегистрирована. Приложение, которое использует pzl-технологию, может либо не использовать файл-реестр компонент либо может назначить использование этого файла путем установки его имени с помощью предиката setComponentRegisterFileName/1.
Параметр ComponentRegisterFileName должен быть либо полным именем файла, либо относительным именем относительно места расположения главного исполняемого приложения. Имя расширения файла pzl-системой не регламентируется. Рекомендуемое имя расширения - .PZR.
Установка имени файла после старта приложения может быть осуществлена только один раз. При повторном назначении файла-реестра существование предыдущего назначения не проверяется.
Загрузка данных о регистрации компонент производится только один раз при первом обращении к какой-либо pzl-компоненте. Соответственно, добавление информации о регистрации в этот же файл или изменение этой информации после того, как приложение обратилось к этому файлу, не могут повлиять на уже работающее приложение.
Корректность содержимого файла ComponentRegisterFileName при выполнении предиката setComponentRegisterFileName не проверяется. Но файл должен существовать.
Получение имени файла-реестра, установленного в pzl-системе возможно с помощью обращения
RegistryFileStatus=pzl::getComponentRegisterFileName().
При этом возвращается не непосредственно имя файла, а терм, определяющий состояние назначения файла-реестра, в том числе и имя файла, если было проведено назначение.
Exceptions
При отсутствии файла с именем, установленным параметром ComponentRegisterFileName, генерируется исключение с текстом
"The file <ComponentRegisterFileName> can not be found"
При проверке существования файла возможны системные исключения, связанные с особенностями файловой системы операционной системы с сообщением
"System Error while checking the file <ComponentRegisterFileName> existence"
и сохранением кода ошибки.
Example
class predicates runProfile:(window TaskWindow,string RegistryFileName,string InitialComponent). clauses runProfile(_TaskWindow,RegistryFileName,_InitialComponent):- not(RegistryFileName=""), trap(pzlPort::setComponentRegisterFileName(RegistryFileName),_Err,fail()), fail. runProfile(TaskWindow,RegistryFileName,InitialComponent):- RegistryFileStatus=pzl::getComponentRegisterFileName(), notifyUser(TaskWindow,RegistryFileStatus,RegistryFileName), runStudioStarter(TaskWindow,InitialComponent).
pzlPort::isInitialized/0
isInitialized:() determ.
Checking of the initialization status of the VpPuZzle system
Description
Позволяет выяснить, была ли выполнена инициализация pzl-системы, то есть доступна ли она для использования. Положительный исход проверки дает положительный ответ на этот вопрос. Соответственно, отрицательный - отрицательный.
Exceptions
No
Example
clauses run():- not(isInitialazed()), pzlPort::init(), fail. run():- TaskWindow = taskWindow::new(), ...