IRBIS64.dll — различия между версиями
Материал из Wikipedia
Sokv (обсуждение | вклад) |
Sokv (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | ==Инициализация | + | ==Инициализация и освобождение ресурсов, необходимых для работы с базами данных ИРБИС== |
− | // Инициализировать | + | Перед вызовом функций библиотеки <tt>IRBIS64.dll</tt> необходимо инициализировать запись <tt>TIrbisSpace</tt> с помощью функции <tt>IrbisInit</tt>. |
− | // | + | |
− | + | // Инициализировать запись <tt>TIrbisSpace</tt> и вернуть указатель на неё. | |
+ | function IrbisInit: PIrbisSpace; export; | ||
+ | |||
+ | После окончания работы с библиотекой <tt>IRBIS64.dll</tt> необходимо освободить занятые во время работы ресурсы с помощью процедуры <tt>IrbisClose</tt>. | ||
+ | |||
+ | '''Примечание: процедура <tt>IrbisClose</tt> в том числе запускает процедуры <tt>IrbisCloseMST</tt>, <tt>IrbisCloseTerm</tt>.''' | ||
+ | |||
+ | // Освободить ресурсы, занятые во время работы с библиотекой <tt>IRBIS64.dll</tt>: | ||
+ | // закрыть файлы, освободить память. | ||
+ | // Параметры: | ||
+ | // SP – указатель на запись TIrbisSpace. | ||
+ | procedure IrbisClose(SP: PIrbisSpace); export; | ||
// Открыть файлы MST и XRF. | // Открыть файлы MST и XRF. | ||
− | // SP | + | // Параметры: |
− | // DataBase | + | // SP – указатель на запись TIrbisSpace; |
− | // ANumberShelfs | + | // DataBase – полный путь к файлам MST и XRF с указанием имени файла, но без расширения |
+ | // (предполагается, что эти файлы находятся в одной папке, одинаково называются и отличаются | ||
+ | // расширением); | ||
+ | // ANumberShelfs – количество полок. | ||
function IrbisInitMST(SP: PIrbisSpace; DataBase: Pchar; ANumberShelfs: integer): integer; export; | function IrbisInitMST(SP: PIrbisSpace; DataBase: Pchar; ANumberShelfs: integer): integer; export; | ||
− | ==Инициализация | + | ==Инициализация записи <tt>TIrbisSpace</tt> для работы с записью базы данных (документом базы данных)== |
// базовая функция чтения записи без блокировки (аналог RECORD) | // базовая функция чтения записи без блокировки (аналог RECORD) |
Версия 15:37, 13 июля 2010
Содержание
- 1 Инициализация и освобождение ресурсов, необходимых для работы с базами данных ИРБИС
- 2 Инициализация записи TIrbisSpace для работы с записью базы данных (документом базы данных)
- 3 Функции работы с инверсным файлом
- 4 Функции работы с полями прочитанной записи БЕЗ ФИЗИЧЕСКОЙ ЗАПИСИ
- 5 Функции, осуществляющие запись в БД
Инициализация и освобождение ресурсов, необходимых для работы с базами данных ИРБИС
Перед вызовом функций библиотеки IRBIS64.dll необходимо инициализировать запись TIrbisSpace с помощью функции IrbisInit.
// Инициализировать запись TIrbisSpace и вернуть указатель на неё. function IrbisInit: PIrbisSpace; export;
После окончания работы с библиотекой IRBIS64.dll необходимо освободить занятые во время работы ресурсы с помощью процедуры IrbisClose.
Примечание: процедура IrbisClose в том числе запускает процедуры IrbisCloseMST, IrbisCloseTerm.
// Освободить ресурсы, занятые во время работы с библиотекой IRBIS64.dll: // закрыть файлы, освободить память. // Параметры: // SP – указатель на запись TIrbisSpace. procedure IrbisClose(SP: PIrbisSpace); export;
// Открыть файлы MST и XRF. // Параметры: // SP – указатель на запись TIrbisSpace; // DataBase – полный путь к файлам MST и XRF с указанием имени файла, но без расширения // (предполагается, что эти файлы находятся в одной папке, одинаково называются и отличаются // расширением); // ANumberShelfs – количество полок. function IrbisInitMST(SP: PIrbisSpace; DataBase: Pchar; ANumberShelfs: integer): integer; export;
Инициализация записи TIrbisSpace для работы с записью базы данных (документом базы данных)
// базовая функция чтения записи без блокировки (аналог RECORD) function IrbisRecord(PS: PIrbisSpace; Shelf, mfn: longint): integer; export;
Функции работы с инверсным файлом
Поисковый ключ term должен иметь длину >=255 используйте тип TKey.
// Найти термин term. // Возвращает: // 0 - термин найден // TERM_NOT_EXISTS = -202 в term - следующий термин // TERM_LAST_IN_LIST = -203 в term - #0 // TERM_FIRST_IN_LIST = -204 в term - первый термин словаря function Irbisfind(PS: PIrbisSpace; term: Pchar): integer; export;
// дать следующий термин // возврат 0 и term TERM_LAST_IN_LIST и #0 function Irbisnxtterm(PS: PIrbisSpace; term: Pchar): integer; export;
// дать предидущий термин // возврат 0 и term TERM_FIRST_IN_LIST и #0 function Irbisprevterm(PS: PIrbisSpace; term: Pchar): integer; export;
// Возвращает число ссылок на термин. // Функция предназначена для использования после вызова Irbisfind. function Irbisnposts(PS: PIrbisSpace): longint; export;
// Разобрать ссылку на: mfn, tag, occ, cnt. // Возможные значения opt: // opt = 1 функция возвращает mfn (номер записи); // opt = 2 функция возвращает tag (метка поля); // opt = 3 функция возвращает occ (повторение поля); // opt = 4 функция возвращает cnt (номер слова). // Возвращает: в случае успеха положительное значение (больше ноля). function IrbisPosting(PS: PIrbisSpace; opt: smallint): longint; export;
// инициализация работы со ссылками - не вызывается напрямую процедура скрыта в FIND function Irbisinitpost(PS: PIrbisSpace): integer; export;
// Перейти к следующей ссылке. // Возвращает: 0 - успешно выполнено; -1 - конец списка. function IrbisNxtPost(PS: PIrbisSpace): integer; export;
// установить указатель постингов на заданном чтобы читать дальше NXTPost с него!!! function IrbisFindPosting(PS: PIrbisSpace; const Term: PChar; const posting: TifpItemPosting): integer; export;
Функции работы с полями прочитанной записи БЕЗ ФИЗИЧЕСКОЙ ЗАПИСИ
// Возвращает: порядковый номер поля с заданной меткой или 0, если поле отсутствует в записи. // Аналог функции FIELDN в ISIS. function IrbisFieldN(PS: PIrbisSpace; shelf, met, occ: integer): integer; export;
// Получить элемент данных записи, полученной с помощью вызова IrbisRecord или аналога ISISRLOCK. // Аналог функции FIELD в ISIS. // Где: // nf - порядковый номер; // subfields - подполе или подполя (указываются только символы, идентифицирующие подполе, без зннака ^). function IrbisField(PS: PIrbisSpace; shelf, nf: integer; subfields: PChar): Pchar; export;
// nf - порядковый номер поля в справочнике // если nf<1 или nf>кол-ва полей, то поле добавляется последним // возврат: 0 - успешное завершение <>0 - не успешное // АНАЛОГ ISIS FLDADD function Irbisfldadd(PS: PIrbisSpace; Shelf,met, nf: integer; pole: Pchar): integer;export;
// замена поля // возврат: 0 - успешно; <>0 - неуспешно // если pole=nil () - удаляет!! // аналог FLDREP function Irbisfldrep(PS: PIrbisSpace; Shelf,nf: integer; pole: Pchar): integer;export;
// аналог NFIELDS function Irbisnfields(PS: PIrbisSpace;Shelf:integer): integer;export;
// вернуть число повторений поля с даной меткой // аналог NOCC function Irbisnocc(PS: PIrbisSpace; Shelf,met: integer): integer;export;
// вернуть метку поля по порядковому номеру поля в записи // аналог FLDTAG function Irbisfldtag(PS: PIrbisSpace; Shelf,nf: integer): integer; export;
// опустошает запись function Irbisfldempty(PS:PIrbisSpace;Shelf:integer):integer;export;
// формирование заготовки для новой записи с номером Amfn function Irbisnewrec(PS: PIrbisSpace; shelf: integer): integer; export;
// изменитьномер записи function Irbischangemfn(PS: PIrbisSpace; shelf,newmfn: integer):integer;export;
// номер документа в базе function Irbismfn(PS: PIrbisSpace;shelf:integer): longint;export;
// номер следующей НОВОЙ запис в базе = (максим - 1) function Irbismaxmfn(PS: PIrbisSpace): longint;export;
Функции, осуществляющие запись в БД
// опустошение БД function IrbisDBEmptyTime(IrbisSpace:PIrbisSpace;seconds:integer):integer;export;
// заблокировать БД function IrbisLockDBTime(IrbisSpace:PIrbisSpace;seconds:integer):integer;export;
// снять блокировку БД function IrbisUnLockDBTime(IrbisSpace:PIrbisSpace;seconds:integer):integer;export;
// базовая функция записи с полки с актуализацией и разблокировкой function IrbisRecUpdateTime(IrbisSpace:PIrbisSpace;Shelf:integer;KeepLock:integer;Updif:boolean;seconds:integer; var result_update:integer;var result_updif:integer):integer;export;
// базовая функция актуализации записи function IrbisRecIfUpdateTime(IrbisSpace:PIrbisSpace;Shelf, mfn:integer;seconds:integer):integer;export;
// базовая функция блокировки записи // аналог RECORD function IrbisRecLockTime(IrbisSpace: PIrbisSpace; Shelf,mfn: longint;seconds:integer): integer;export;
// базовая функция разблокировки записи function IrbisRecUnLockTime(IrbisSpace:PIrbisSpace;mfn:integer;seconds:integer):integer;export;