Форматный выход для подключения функций пользователя&unifor(‘+8…) |
&UNIFOR(‘+8….) - подключение функций пользователя |
Структура форматного выхода:
&unifor('+8 <имя_DLL>,<имя_функции>,<передаваемые_данные>')
|
Форматный выход позволяет вызывать функции из внешних DLL, - т.е. предлагается возможность создания
СОБСТВЕННЫХ ФОРМАТНЫХ ВЫХОДОВ.
Примеры: |
..&unifor('+8test_dll,test_function1,',v200^a)... - (в вызываемую функцию передается заглавие) ..(&unifor('+8test_dll,test_function2,',v910)).... - (передаются повторения 910 поля) ..(&unifor('+8test_dll,test_function2,',&unifor('+0')))....(передается вся текущая запись)
|
.
Внешние функции должны ОБЯЗАТЕЛЬНО иметь следующую структуру:
(Pascal)
test_function1(buf1,buf2: Pchar; bufsize: integer): integer;
(C)
int test_function1(char *buf1, char *buf2, int bufsize)
где:
buf1 - передаваемые данные (входные)
buf2 - возвращаемые данные (выходные)
bufsize - размер выходного буфера (buf2)
(в ИРБИС64 данные передаются и возвращаются в UTF8)
=0 - нормальное завершение;
<>0 – ненормальное.
В случае нестандартного вызова функций из DLL (по Pascal-правилам) надо указывать символ * перед именем DLL:
&unifor('+8*<имя_DLL>,<имя_функции>,...
|
Следует помнить, что имя функции в вызове надо указывать строго в соответствии с тем, как она экспортирована из DLL (т.е. большие и маленькие буквы различаются).
См. также: