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

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

 
(не показано 68 промежуточных версий этого же участника)
Строка 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
|-
|setComponentRegisterFileName:(string DllRegisterFileName).
Установка имени файла-реестра компонент
|}
|}
=Используемые дополнительные ресурсы=
Обязательно:
*использование библиотеки pzlPort_XX.lib, где XX - квалификатор лицензии. Библиотека фактически содержит имплементацию класса pzlPort и включает имплементацию свойств pzl-Контейнера главного исполняемого приложения.
*наличие пакета pzlConfig, который участвует в процессе инициализации.


=Описание предикатов класса=
=Описание предикатов класса=
==core::classInfo/0==
==core::classInfo/0==
<vip>classInfo:().</vip>
<vip>classInfo:().</vip>
Получение информации о классе. Является типичным предикатом, который автоматически генерируется при генерации текста любого класса средствами IDE системы VIP. Описание и порядок использования предиката - см. руководства VIP.
Получение информации о классе.
 
'''Описание'''
 
Является типичным предикатом, который автоматически генерируется при генерации текста любого класса средствами IDE системы VIP. Описание и порядок использования предиката - см. руководства VIP.


==pzlPort::init/0==
==pzlPort::init/0==
<vip>init:().</vip>
<vip>init:().</vip>
Инициализация системы VpPuzzle.
'''Описание'''
'''Описание'''


Инициализация системы VpPuzzle. Этот предикат всегда должен быть первым предикатом, к которому производится обращение. После инициализации возможны обращения к другим классам pzl-системы.  
Этот предикат всегда должен быть первым предикатом, к которому производится обращение. После инициализации возможны обращения к другим классам pzl-системы.  


Инициализация pzl-системы может быть выполнена как немедленно после старта приложения, так и в любой другой момент, когда возникает необходимость в начале ее использования.
Инициализация pzl-системы может быть выполнена как немедленно после старта приложения, так и в любой другой момент, когда возникает необходимость в начале ее использования.
Строка 48: Строка 63:
</vip>
</vip>


'''Используемые дополнительные ресурсы'''
==pzlPort::setComponentRegisterFileName/1==
<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>


Обязательно:
При проверке существования файла возможны системные исключения, связанные с особенностями файловой системы операционной системы с сообщением
*использование библиотеки pzlPort_XX.lib, где XX - квалификатор лицензии. Библиотека фактически содержит имплементацию класса pzlPort и включает имплементацию свойств pzl-Контейнера главного исполняемого приложения.
<vip>"System Error while checking the file <ComponentRegisterFileName> existence"</vip> и сохранением кода ошибки.
*наличие пакета pzlConfig, который участвует в процессе инициализации.


==pzlPort::setComponentRegisterFileName/1==
'''Пример'''
<vip>setComponentRegisterFileName:(string DllRegisterFileName).</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(),
    ...


Ссылки