Класс PzlPort: различия между версиями
(не показаны 63 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
{{copyright}} | |||
=Назначение= | =Назначение= | ||
Класс pzlPort является ядром системы VpPuzzle и предназначен для обеспечения работы с pzl-компонентами. Этот класс обязательно должен включаться в проект главного приложения, генерирующего исполняемый (.EXE) файл. | Класс pzlPort является ядром системы VpPuzzle и предназначен для обеспечения работы с pzl-компонентами. Этот класс обязательно должен включаться в проект главного приложения, генерирующего исполняемый (.EXE) файл. | ||
Обращения к предикатам этого класса возможны только из классов главного исполняемого приложения. Компоненты, помещенные в DLL-контейнеры, не могут обращаться к предикатам этого класса. | |||
=Список предикатов класса= | =Список предикатов класса= | ||
{|border="1" style="float:center;background:#F9F9F9;color:black;" | {|cellspacing="0" border="1" style="float:center;background:#F9F9F9;color:black;" | ||
|- | |- | ||
|classInfo. | |[[#core::classInfo/0|classInfo]]. | ||
Получение информации о классе | Получение информации о классе | ||
|- | |- | ||
|init:(). | |[[#pzlPort::init/0|init:()]]. | ||
Инициализация системы VpPuZzle | Инициализация системы VpPuZzle | ||
|- | |- | ||
|isInitialized:() determ. | |[[#pzlPort::setComponentRegisterFileName/1|setComponentRegisterFileName:(string ComponentRegisterFileName)]]. | ||
Установка имени файла-реестра компонент | |||
|- | |||
|[[#pzlPort::isInitialized/0|isInitialized:() determ]]. | |||
Проверка инициализации системы VpPuZzle | Проверка инициализации системы VpPuZzle | ||
|} | |} | ||
Строка 60: | Строка 64: | ||
==pzlPort::setComponentRegisterFileName/1== | ==pzlPort::setComponentRegisterFileName/1== | ||
<vip>setComponentRegisterFileName:(string | <vip>setComponentRegisterFileName:(string ComponentRegisterFileName).</vip> | ||
Установка имени файла-реестра компонент. | |||
Файл ComponentRegisterFileName является одним из хринилищ информации о pzl-компонентах на данном компьютере. Другим хранилищем является реестр Windows. При поиске информации о месте расположения компоненты, файл регистрации используется первым. Если файла нет или компонента в нем не зарегистрирована, то поиск продолжается в системном реестре Windows. | |||
Информация в файле-реестре компонент хранится в формате термов, принятом в системе Visual Prolog (save-consult). Прежде чем компонента может быть использована на данном компьютере, она должна быть на нем зарегистрирована. Приложение, которое использует pzl-технологию, может либо не использовать файл-реестр компонент либо может назначить использование этого файла путем установки его имени с помощью предиката setComponentRegisterFileName/1. | |||
'''Описание''' | |||
Параметр ''ComponentRegisterFileName'' должен быть либо полным именем файла, либо относительным именем относительно места расположения главного исполняемого приложения. | |||
Имя расширения файла pzl-системой не регламентируется. Рекомендуемое имя расширения - '''.PZR'''. | |||
Установка имени файла после старта приложения может быть осуществлена только один раз. | |||
При повторном назначении файла-реестра существование предыдущего назначения не проверяется. | |||
Загрузка данных о регистрации компонент производится только один раз при первом обращении к какой-либо pzl-компоненте. Соответственно, добавление информации о регистрации в этот же файл или изменение этой информации после того, как приложение обратилось к этому файлу, не могут повлиять на уже работающее приложение. | |||
Корректность содержимого файла ''ComponentRegisterFileName'' при выполнении предиката '''''setComponentRegisterFileName''''' не проверяется. Но файл должен существовать. | |||
Получение имени файла-реестра, установленного в pzl-системе возможно с помощью обращения | |||
<vip>RegistryFileStatus=pzl::getComponentRegisterFileName().</vip> При этом возвращается не непосредственно имя файла, а терм, определяющий состояние назначения файла-реестра, в том числе и имя файла, если было проведено назначение. | |||
'''Исключения''' | |||
При отсутствии файла с именем, установленным параметром ''ComponentRegisterFileName'', генерируется исключение с текстом | |||
<vip>"The file <ComponentRegisterFileName> can not be found"</vip> | |||
При проверке существования файла возможны системные исключения, связанные с особенностями файловой системы операционной системы с сообщением | |||
<vip>"System Error while checking the file <ComponentRegisterFileName> existence"</vip> и сохранением кода ошибки. | |||
'''Пример''' | |||
<vip> | |||
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). | |||
</vip> | |||
==pzlPort::isInitialized/0== | ==pzlPort::isInitialized/0== | ||
<vip>isInitialized:() determ.</vip> | <vip>isInitialized:() determ.</vip> | ||
Проверка инициализации системы VpPuZzle | |||
'''Описание''' | |||
Позволяет выяснить, была ли выполнена инициализация pzl-системы, то есть доступна ли она для использования. Положительный исход проверки дает положительный ответ на этот вопрос. Соответственно, отрицательный - отрицательный. | |||
'''Исключения''' | |||
Исключения невозможны. | |||
'''Пример''' | |||
<vip> | |||
clauses | |||
run():- | |||
not(isInitialazed()), | |||
pzlPort::init(), | |||
fail. | |||
run():- | |||
TaskWindow = taskWindow::new(), | |||
... | |||
</vip> | |||
=Ссылки= | |||
[[Категория:VpPuZzle]] | [[Категория:VpPuZzle]] |
Текущая версия на 14:53, 21 ноября 2007
Автор: Виктор Юхтенко
Назначение
Класс pzlPort является ядром системы VpPuzzle и предназначен для обеспечения работы с pzl-компонентами. Этот класс обязательно должен включаться в проект главного приложения, генерирующего исполняемый (.EXE) файл.
Обращения к предикатам этого класса возможны только из классов главного исполняемого приложения. Компоненты, помещенные в DLL-контейнеры, не могут обращаться к предикатам этого класса.
Список предикатов класса
classInfo.
Получение информации о классе |
init:().
Инициализация системы VpPuZzle |
setComponentRegisterFileName:(string ComponentRegisterFileName).
Установка имени файла-реестра компонент |
isInitialized:() determ.
Проверка инициализации системы VpPuZzle |
Используемые дополнительные ресурсы
Обязательно:
- использование библиотеки pzlPort_XX.lib, где XX - квалификатор лицензии. Библиотека фактически содержит имплементацию класса pzlPort и включает имплементацию свойств pzl-Контейнера главного исполняемого приложения.
- наличие пакета pzlConfig, который участвует в процессе инициализации.
Описание предикатов класса
core::classInfo/0
classInfo:().
Получение информации о классе.
Описание
Является типичным предикатом, который автоматически генерируется при генерации текста любого класса средствами IDE системы VIP. Описание и порядок использования предиката - см. руководства VIP.
pzlPort::init/0
init:().
Инициализация системы VpPuzzle.
Описание
Этот предикат всегда должен быть первым предикатом, к которому производится обращение. После инициализации возможны обращения к другим классам pzl-системы.
Инициализация pzl-системы может быть выполнена как немедленно после старта приложения, так и в любой другой момент, когда возникает необходимость в начале ее использования. Деинициализация системы невозможна.
Повторная инициализация игнорируется.
Исключения
Предикат при исполнении не генерирует исключения. Повторная инициализация игнорируется.
Пример
clauses run():- pzlPort::init(), TaskWindow = taskWindow::new(), ...
pzlPort::setComponentRegisterFileName/1
setComponentRegisterFileName:(string ComponentRegisterFileName).
Установка имени файла-реестра компонент.
Файл ComponentRegisterFileName является одним из хринилищ информации о pzl-компонентах на данном компьютере. Другим хранилищем является реестр Windows. При поиске информации о месте расположения компоненты, файл регистрации используется первым. Если файла нет или компонента в нем не зарегистрирована, то поиск продолжается в системном реестре Windows.
Информация в файле-реестре компонент хранится в формате термов, принятом в системе Visual Prolog (save-consult). Прежде чем компонента может быть использована на данном компьютере, она должна быть на нем зарегистрирована. Приложение, которое использует pzl-технологию, может либо не использовать файл-реестр компонент либо может назначить использование этого файла путем установки его имени с помощью предиката setComponentRegisterFileName/1.
Описание
Параметр ComponentRegisterFileName должен быть либо полным именем файла, либо относительным именем относительно места расположения главного исполняемого приложения. Имя расширения файла pzl-системой не регламентируется. Рекомендуемое имя расширения - .PZR.
Установка имени файла после старта приложения может быть осуществлена только один раз. При повторном назначении файла-реестра существование предыдущего назначения не проверяется.
Загрузка данных о регистрации компонент производится только один раз при первом обращении к какой-либо pzl-компоненте. Соответственно, добавление информации о регистрации в этот же файл или изменение этой информации после того, как приложение обратилось к этому файлу, не могут повлиять на уже работающее приложение.
Корректность содержимого файла ComponentRegisterFileName при выполнении предиката setComponentRegisterFileName не проверяется. Но файл должен существовать.
Получение имени файла-реестра, установленного в pzl-системе возможно с помощью обращения
RegistryFileStatus=pzl::getComponentRegisterFileName().
При этом возвращается не непосредственно имя файла, а терм, определяющий состояние назначения файла-реестра, в том числе и имя файла, если было проведено назначение.
Исключения
При отсутствии файла с именем, установленным параметром ComponentRegisterFileName, генерируется исключение с текстом
"The file <ComponentRegisterFileName> can not be found"
При проверке существования файла возможны системные исключения, связанные с особенностями файловой системы операционной системы с сообщением
"System Error while checking the file <ComponentRegisterFileName> existence"
и сохранением кода ошибки.
Пример
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.
Проверка инициализации системы VpPuZzle
Описание
Позволяет выяснить, была ли выполнена инициализация pzl-системы, то есть доступна ли она для использования. Положительный исход проверки дает положительный ответ на этот вопрос. Соответственно, отрицательный - отрицательный.
Исключения
Исключения невозможны.
Пример
clauses run():- not(isInitialazed()), pzlPort::init(), fail. run():- TaskWindow = taskWindow::new(), ...