Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 22, December, 2014 23:34

Удалось поработать с этой библиотекой.
Смог прочитать данные в записи из базы данных. Возникли трудности с
функциями:
function Irbis_InitPFT(PS: PIrbisSpace; Line: PChar): integer; far;
function Irbis_Format(PS: PIrbisSpace; shelf, alt_shelf, trm_shelf, LwLn: Integer; FmtExitDLL : PChar): integer; far;

Инициализация формата прошла успешно - функция вернула ZERO.
А вот после применения формат получил 99. Среди констант такого значения не нашел. Объясните, пожалуйста, что это значит?
Что означают параметры: shelf, alt_shelf, trm_shelf, LwLn?

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 23, December, 2014 02:07

woodyfon написал(а):
-------------------------------------------------------
> Удалось поработать с этой библиотекой.
> Смог прочитать данные в записи из базы данных.

Это замечательно! Поделитесь, пожалуйста, опытом: в какой среде использовалась библиотека (Delphi? какой версии?), как её подключить к своей программе, как осуществить простой поиск?

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: Alio (IP-адрес скрыт)
Дата: 23, December, 2014 09:54

woodyfon написал(а):
-------------------------------------------------------
> Удалось поработать с этой библиотекой.
> Смог прочитать данные в записи из базы данных.
> Возникли трудности с
> функциями:
>
> function Irbis_InitPFT(PS: PIrbisSpace; Line:
> PChar): integer; far;
> function Irbis_Format(PS: PIrbisSpace; shelf,
> alt_shelf, trm_shelf, LwLn: Integer; FmtExitDLL :
> PChar): integer; far;
>
>
> Инициализация формата прошла успешно - функция
> вернула ZERO.
> А вот после применения формат получил 99.
Синтаксическая ошибка в формате - НЕДОПУСТИМЫЙ СИМВОЛ

Среди
> констант такого значения не нашел. Объясните,
> пожалуйста, что это значит?
> Что означают параметры: shelf, alt_shelf,
> trm_shelf, LwLn?

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 23, December, 2014 10:52

Цитата:
amironov73
Это замечательно! Поделитесь, пожалуйста, опытом: в какой среде использовалась библиотека (Delphi? какой версии?), как её подключить к своей программе, как осуществить простой поиск?
Набрался смелости и попросил ее у Александра Иосифовича заголовочные файлы (модули - pas) для irbis64.dll. Среда разработки - Delphi 7. Провести поиск пока не удается. Не понимаю, открытие инверсных файлов происходит, а вот при попытке найти термин в словаре - получаю ошибку -401 - "Ошибка открытия инверсного файла". Чтобы подключить библиотеку, необходимо определить переменную типа PIrbisSpace.
Цитата:
Alio
Синтаксическая ошибка в формате - НЕДОПУСТИМЫЙ СИМВОЛ
Удалось скомпилировать проект и без модуля backup, но, боюсь, некоторые функции могут некоректно работать.
Синтаксической ошибки в формате в принципе не должно быть - скопировал строку из редактора форматов, чтобы собственно и исключить такую вероятность.

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: skiph (IP-адрес скрыт)
Дата: 21, February, 2019 09:04

А какое описание у типа PIrbisSpace?

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: Владимир Р. (IP-адрес скрыт)
Дата: 14, April, 2019 13:26

Прошу помочь!

Заранее прошу извинить за пространное обращение.

Передо мной поставили сугубо утилитарную задачу: (желательно) программно обеспечить корректировку электронной записи в авторитетном массиве ATHRC (записи и их иерархия в структуре академических институтов РАН очень часто меняются, подразделения выбывают, меняют название, переводятся в другое подчинение, и т.д.). Каждый, кто работал с базами данных с программным доступом, знает, что редактировать в массиве прямо на сервере недопустимо, поскольку любой программный продукт не появляется «вдруг и сразу», а проходит несколько стадий отладки и тестирования на контрольном примере.

У меня имеется опыт работы с языком ISIS-Pascal в интегрированной среде CDS/ISIS/M (DOS), затем в частично разинтегртрованной среде WinISIS (из языка ISIS-Pascal изъят оператор возвращения откорректированной записи обратно в файл MST). Вот и теперь, проанализировав предоставленный набор функций в irbis64.dll, вижу, что возможности также ограничиваются лишь чтением записи, операциями над полями-подполями, форматированием. Также похоже, что доступ к данным, которые трогать категорически нельзя, возможен только через сервер WEB-IRBIS (с соответствующим получением разрешения для удаленного доступа и регистрацией).

В связи с этим прошу ответить на вопрос: существует ли возможность не заходя на сервер через WEB-IRBIS вносить изменения в электронные записи, а затем уже исправленную базу данных обновлять на сервере.

Желательно найти решение через программу (Delpi-7), а не с помощью .GBL.

PS.
«Что означают параметры: shelf . . .».
В DLL WinISIS (isis001.pas и isis32.dll) shelf определяет самостоятельную область, в которой выполняется работа с конкретной базой данных. Для работы с несколькими базами одновременно для каждой открываемой БД определяется своя shelf («полка»). Вероятно, что и обращении к массивам в АБИС ИРБИС сохранена та же идеология.

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 14, April, 2019 13:39

Владимир Р. написал(а):
-------------------------------------------------------

> В связи с этим прошу ответить на вопрос:
> существует ли возможность не заходя на сервер
> через WEB-IRBIS вносить изменения в электронные
> записи, а затем уже исправленную базу данных
> обновлять на сервере.

Можно подключиться к серверу ИРБИС64 (irbis_server.exe) с помощью irbis64_client.dll (входит в поставку ИРБИС64) и программно найти, загрузить и модифицировать нужные записи, а затем отправить их обратно на сервер. Общение с сервером в этом случае происходит по протоколу TCP-IP, порт 6666. "Расшаренные папки" не требуются.

> Желательно найти решение через программу
> (Delpi-7), а не с помощью .GBL.

С irbis64_client.dll вполне можно работать из Delphi, в т. ч. Delphi 7.

> «Что означают параметры: shelf . . .».

Shelf в переводе с английского - полка. В ISIS и ИРБИС традиционно используется метафора полки. Нужные записи загружаются на полку, где с ними производятся необходимые действия, например, добавляются или удаляются поля, происходит расформатирование и т. п. Размер данных, помещаемых на полку, не может превышать размера этой полки. Стандартно размер полки составляет 32 Кб (поэтому очень большие записи или форматы могут не поместиться на полку). Перед началом работы программист должен "заказать" необходимые полки и в дальнейшем не забывать об их размере.

> В DLL WinISIS (isis001.pas и isis32.dll) shelf
> определяет самостоятельную область, в которой
> выполняется работа с конкретной базой данных. Для
> работы с несколькими базами одновременно для
> каждой открываемой БД определяется своя shelf
> («полка»). Вероятно, что и обращении к массивам в
> АБИС ИРБИС сохранена та же идеология.

Именно так.

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: Владимир Р. (IP-адрес скрыт)
Дата: 15, April, 2019 16:31

Благодарю за подсказку, попробую обратиться к серверу таким образом.

Re: irbis64.dll - программная библиотека для доступа к базам данных ИРБИС 64 и обработки данных с использованием языка форматирования
Пользователь: snoozamoorooed (IP-адрес скрыт)
Дата: 22, October, 2019 08:51

Добрый день.
Может несколько запоздало, но есть несколько мыслей в тему.

Полка (shelf) в irbis64.dll это номер буфера в памяти, где хранится запись.
Когда вы открываете базу (мастер файл) нужно задать сколько таких буферов вам понадобится.
Минимум один, максимум сам ирбис использует по-моему 7.
Если нужно выполнять форматы, лучше задать количество полок больше 1, так как они могут понадобится, например для функции REF.
В актуальных версиях ирбис размер буфера автоматически увеличивается по необходимости.
При работе с dll запись из файла загружается в этот буфер и все функции по работе с данными работают с ним.
Потом, при сохранении данные из него попадают обратно в файл.


Для задач автоматизации можно задействовать наш новый модуль PHP ирбис.
Интерфейс у него похож на irbis64.dll, но (на мой взгляд) пользоваться несколько проще и возможностей там больше.
Можно подключить собственные PHP функции в форматах, перехватывать юнифоры.
Ошибки синтаксиса и ошибки времени выполнения в форматах он отображает и выводит в лог.
Плюс присутствуют функции сервера, которых в irbis64.dll нет.



Редактировано 1 раз. Последний раз 22.10.2019 09:06 пользователем snoozamoorooed.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.