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

&unifor(‘+8…)

Navigation:  ПРИЛОЖЕНИЯ > 4. ЯЗЫК ФОРМАТИРОВАНИЯ ДАННЫХ. РЕДАКТОР ФОРМАТОВ > Функции > Строковые функции > Форматные выходы > UNIFOR формат-программа >

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

&unifor(‘+8…)

Previous pageReturn to chapter overviewNext page

&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 (т.е. большие и маленькие буквы различаются).

 


См. также:

Формат-программа UNIFOR