&uf('+8... - Форматный выход для подключения функций пользователя


НАЧАЛО >> Оглавление >> Общее описание >> Язык форматирования ИРБИС >> Функции >> Строковые функции >> Подключение программ к формату (форматные выходы) >> &uf('+8... - Форматный выход для подключения функций пользователя


Форматный выход для подключения функций пользователя

Форматный выход позволяет вызывать функции из внешних DLL, - т.е. предлагается возможность создания СОБСТВЕННЫХ ФОРМАТНЫХ ВЫХОДОВ.

Структура форматного выхода:

&unifor('+8<имя_DLL>,<имя_функции>,<передаваемые_данные>') 

Пример:

в вызываемую функцию передается заглавие:

&unifor('+8test_dll,test_function1,',v200^a)

передаются повторения 910 поля:

(&unifor('+8test_dll,test_function2,',v910))

передается вся текущая запись:

(&unifor('+8test_dll,test_function2,',&unifor('+0'))) 

Внешние функции должны ОБЯЗАТЕЛЬНО иметь следующую структуру:

test_function1(buf1,buf2: Pchar; bufsize: integer): integer; 
int test_function1(char *buf1, char *buf2, int bufsize) 

где:

в ИРБИС64 данные передаются и возвращаются в UTF8

Возврат функции:

В случае нестандартного вызова функций из DLL (по Pascal-правилам) надо указывать символ * перед именем DLL:

&unifor('+8*<имя_DLL>,<имя_функции>,.... 

Имя функции в вызове надо указывать строго в соответствии с тем, как она экспортирована из DLL (т.е. большие и маленькие буквы различаются).