НАЧАЛО >> Оглавление >> Общее описание >> Язык форматирования ИРБИС >> Функции >> Строковые функции >> Подключение программ к формату (форматные выходы) >> &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 (т.е. большие и маленькие буквы различаются). |