Класс PzlPort: различия между версиями

Материал из wikiru.visual-prolog.com

 
(не показано 57 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{copyright}}
=Назначение=
=Назначение=
Класс pzlPort является ядром системы VpPuzzle и предназначен для обеспечения работы с pzl-компонентами. Этот класс обязательно должен включаться в проект главного приложения, генерирующего исполняемый (.EXE) файл.
Класс pzlPort является ядром системы VpPuzzle и предназначен для обеспечения работы с pzl-компонентами. Этот класс обязательно должен включаться в проект главного приложения, генерирующего исполняемый (.EXE) файл.


Строка 5: Строка 7:


=Список предикатов класса=
=Список предикатов класса=
{|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
|-
|setComponentRegisterFileName:(string ComponentRegisterFileName).
Установка имени файла-реестра компонент
|}
|}


Строка 69: Строка 71:
Информация в файле-реестре компонент хранится в формате термов, принятом в системе Visual Prolog (save-consult). Прежде чем компонента может быть использована на данном компьютере, она должна быть на нем зарегистрирована. Приложение, которое использует pzl-технологию, может либо не использовать файл-реестр компонент либо может назначить использование этого файла путем установки его имени с помощью предиката setComponentRegisterFileName/1.  
Информация в файле-реестре компонент хранится в формате термов, принятом в системе Visual Prolog (save-consult). Прежде чем компонента может быть использована на данном компьютере, она должна быть на нем зарегистрирована. Приложение, которое использует pzl-технологию, может либо не использовать файл-реестр компонент либо может назначить использование этого файла путем установки его имени с помощью предиката setComponentRegisterFileName/1.  


Установка имени файла после старта приложения может быть осуществлена только один раз. Загрузка данных о регистрации компонент производится только один раз при первом обращении к какой-либо pzl-компоненте. Добавление информации о регистрации в этот же файл или изменение этой информации после того, как приложение обратилось к этому файлу, не могут повлиять на уже работающее приложение.
'''Описание'''
 
Параметр ''ComponentRegisterFileName'' должен быть либо полным именем файла, либо относительным именем относительно места расположения главного исполняемого приложения.
Имя расширения файла pzl-системой не регламентируется. Рекомендуемое имя расширения - '''.PZR'''.
 
Установка имени файла после старта приложения может быть осуществлена только один раз.  
При повторном назначении файла-реестра существование предыдущего назначения не проверяется.
 
Загрузка данных о регистрации компонент производится только один раз при первом обращении к какой-либо pzl-компоненте. Соответственно, добавление информации о регистрации в этот же файл или изменение этой информации после того, как приложение обратилось к этому файлу, не могут повлиять на уже работающее приложение.


'''Описание'''
Корректность содержимого файла ''ComponentRegisterFileName'' при выполнении предиката '''''setComponentRegisterFileName''''' не проверяется. Но файл должен существовать.


Параметр ComponentRegisterFileName должен быть либо полным именем файла, либо относительным именем относительно места расположения главного исполняемого приложения.
Получение имени файла-реестра, установленного в 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(),
    ...


Ссылки