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

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

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


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


'''Описание'''
Загрузка данных о регистрации компонент производится только один раз при первом обращении к какой-либо pzl-компоненте. Соответственно, добавление информации о регистрации в этот же файл или изменение этой информации после того, как приложение обратилось к этому файлу, не могут повлиять на уже работающее приложение.
 
Корректность содержимого файла ''ComponentRegisterFileName'' при выполнении предиката '''''setComponentRegisterFileName''''' не проверяется. Но файл должен существовать.


Параметр ComponentRegisterFileName должен быть либо полным именем файла, либо относительным именем относительно места расположения главного исполняемого приложения.
Получение имени файла-реестра, установленного в pzl-системе возможно с помощью обращения
RegistryFileStatus=pzl::getComponentRegisterFileName(). При этом возвращается не непосредственно имя файла, а терм, определяющий состояние назначения файла-реестра, в том числе и имя файла, если было проведено назначение.


'''Исключения'''
'''Исключения'''
При отсутствии файла с именем, установленным параметром ''ComponentRegisterFileName'', генерируется исключение с текстом "The file <ComponentRegisterFileName> can not be found"
При проверке существования файла возможны системные исключения, связанные с особенностями файловой системы операционной системы с сообщением "System Error while checking the file <ComponentRegisterFileName> existence" и сохраненеие кода ошибки.


'''Пример'''
'''Пример'''
<vip>
runProfile(_TaskWindow,_ProfileName,RegistryFileName,_InitialComponent,_ApplicationTitle):-
  not(RegistryFileName=""),
  trap(pzlPort::setComponentRegisterFileName(RegistryFileName),_Err,fail()),
  fail.
runProfile(TaskWindow,_ProfileName,RegistryFileName,InitialComponent,ApplicationTitle):-
  RegistryFileStatus=pzl::getComponentRegisterFileName(),
  notifyUser(TaskWindow,RegistryFileStatus,RegistryFileName),
  runStudioStarter(TaskWindow,InitialComponent,ApplicationTitle).
</vip>


==pzlPort::isInitialized/0==
==pzlPort::isInitialized/0==

Версия 10:20, 4 октября 2007

Назначение

Класс pzlPort является ядром системы VpPuzzle и предназначен для обеспечения работы с pzl-компонентами. Этот класс обязательно должен включаться в проект главного приложения, генерирующего исполняемый (.EXE) файл.

Обращения к предикатам этого класса возможны только из классов главного исполняемого приложения. Компоненты, помещенные в DLL-контейнеры, не могут обращаться к предикатам этого класса.

Список предикатов класса

classInfo.

Получение информации о классе

init:().

Инициализация системы VpPuZzle

isInitialized:() determ.

Проверка инициализации системы VpPuZzle

setComponentRegisterFileName:(string ComponentRegisterFileName).

Установка имени файла-реестра компонент

Используемые дополнительные ресурсы

Обязательно:

  • использование библиотеки 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" и сохраненеие кода ошибки.

Пример

runProfile(_TaskWindow,_ProfileName,RegistryFileName,_InitialComponent,_ApplicationTitle):-
  not(RegistryFileName=""),
  trap(pzlPort::setComponentRegisterFileName(RegistryFileName),_Err,fail()),
  fail.
runProfile(TaskWindow,_ProfileName,RegistryFileName,InitialComponent,ApplicationTitle):-
  RegistryFileStatus=pzl::getComponentRegisterFileName(),
  notifyUser(TaskWindow,RegistryFileStatus,RegistryFileName),
  runStudioStarter(TaskWindow,InitialComponent,ApplicationTitle).

pzlPort::isInitialized/0

isInitialized:()  determ.

Описание

Исключения

Пример