|
|
Регистрирует указанную функцию приложения для вызова в контексте выполняемого скрипта JS+. В дальнейшем зарегистрированная функция может быть вызвана в контексте выполняемого скрипта JS+
согласно описанным параметрам и возвращаемому значению.
Синтаксис
int __stdcall JSP_RegAppFun(
| ret_cType, | fnc_cName, | arg_cType
| );
|
Параметры
|
Параметр
| Тип
| Описание
|
ret_cType
| char*
| описание типа возвращаемого значения регистрируемой функции (см. ниже)
|
fnc_cName
| char*
| имя регистрируемой функции
|
arg_cType
| char*
| описание типов аргументов регистрируемой функции, перечисляемых через запятую (см. ниже)
|
|
Параметр ret_cType
|
Текстовая строка, описывающая тип возвращаемого значения регистрируемой функции. Ниже указаны возможные типы возвращаемого значения:
Значение
| Описание
|
"void", ""
| возвращаемое значение отсутствует
|
"bool"
| возвращаемое значение типа bool (boolean)
|
"int"
| возвращаемое значение типа int (integer)
|
"double"
| возвращаемое значение типа double
|
"char*"
| возвращаемое значение типа char*
|
"wchar*"
| возвращаемое значение типа WCHAR* (wchar_t*)
|
Описание возвращаемого значения является регистронезависимым, т.е. записи "bool" и "BOOL" являются эквивалентными. Два строковых типа возвращаемых значений реализовано для удобства программирования регистрируемой функции приложения. Скрипт JS+, вызывающий функцию приложения, в любом случае получит корректное возвращаемое значение типа String языка JScript/JavaScript.
|
Параметр arg_cType
|
Текстовая строка, перечисляющая через запятую типы до 32 аргументов регистрируемой функции. Ниже указаны возможные типы аргументов:
Значение
| Описание
|
bool&
| аргумент типа bool (boolean)
|
int&
| аргумент типа int (integer)
|
double&
| аргумент типа double
|
char*
| аргумент типа char*
|
wchar*
| аргумент типа WCHAR* (wchar_t*)
|
ansiStr&
| аргумент типа AnsiString
|
BSTR&
| аргумент типа BSTR
|
stdStr&
| аргумент типа std::string
|
stdWStr&
| аргумент типа std::wstring
|
sysStr&
| аргумент типа System::String (UnicodeString)
|
wideStr&
| аргумент типа WideString
|
size_t&
| аргумент типа size_t
|
vclCmp&
| аргумент типа VCL Component
|
Массивы
| [DESC]
|
int[]
| аргумент типа массив int (integer)
|
double[]
| аргумент типа массив double
|
ansiStr[]
| аргумент типа массив AnsiString
|
BSTR[]
| аргумент типа массив BSTR
|
stdStr[]
| аргумент типа массив std::string
|
stdWStr[]
| аргумент типа массив std::wstring
|
sysStr[]
| аргумент типа массив System::String
|
wideStr[]
| аргумент типа массив WideString
|
size_t[]
| аргумент типа массив size_t
|
Строка описания аргументов является регистронезависимой, т.е. записи "bool&" и "BOOL&" являются эквивалентными. Все типы аргументов, не смотря на присутствие в их именах символов &, * и [], передаются из скрипта JS+ в функцию приложения по значению. Разнообразие строковых типов аргументов реализовано для удобства программирования регистрируемой функции приложения, которая получит из скрипта JS+ корректное значение аргумента любого строкового типа. Массивы Нулевым элементом в массиве JS+, предаваемом в функцию приложения, является длина передаваемого массива, приведенная к типу его элементов. Для использования ее в функции приложения, нулевой элемент передаваемого массива следует привести к целочисленному типу, а сам массив использовать со следующего (первого) элемента. Visual C++ Для приложений Visual C++ недоступны типы аргументов: vclCmp stdStr stdWStr sysStr ansiStr wideStr (а также их массивы) Для приложений Visual C++ доступны дополнительные типы аргументов: CStrA CStrW (а также их массивы) соответствующие типам CStringA и CStringW языка Visual C++. Delphi Для приложений Delphi недоступны типы аргументов: vclCmp stdStr stdWStr (а также их массивы)
|
Возвращаемое значение
JSP_OK (0) в случае успеха либо JSP_ERROR (-1) в противном случае.
------------------------ Приложение C++ Builder ------------------------
JSP_Start("TRIAL","");
JSP_RegAppFun("char*","App_tstCStr","char*");
JSP_RET_pchar App_tstCStr(char *str_Val) { return _strrev(str_Val); }
------------------------ Скрипт JS+ ------------------------
var jsp_str="A123я";
alert( jsp_str+"\n-\n"+ App_tstCStr(jsp_str) );
------------------------ Вывод скрипта JS+ ------------------------
A123я - я321A
------------------------ Приложение Visual C++ ------------------------
JSP_Start("TRIAL","User=VC++");
JSP_RegAppFun("char*","App_tstCStr","char*");
JSP_RET_pchar App_tstCStr(char *str_Val) { return _strrev(str_Val); }
------------------------ Скрипт JS+ ------------------------
var jsp_str="A123я";
alert( jsp_str+"\n-\n"+ App_tstCStr(jsp_str) );
------------------------ Вывод скрипта JS+ ------------------------
A123я - я321A
------------------------ Приложение Delphi ------------------------
JSP_Start('TRIAL','User=Delphi');
JSP_RegAppFun('char*','App_tstCStr','char*');
function App_tstCStr(str_Val:pAnsiChar): pAnsiChar stdcall; begin Result:=pAnsiChar(ReverseString(str_Val)); end; exports App_tstCStr;
------------------------ Скрипт JS+ ------------------------
var jsp_str="A123я";
alert( jsp_str+"\n-\n"+ App_tstCStr(jsp_str) );
------------------------ Вывод скрипта JS+ ------------------------
A123я - я321A
Примечание
Функции приложения не требуют формального объявления, поскольку вызываются косвенно из скрипта JS+.
C++
Для удобства записи возвращаемых значений функций приложения можно использовать следующие сокращения:
JSP_RET_void | функция возвращает значение типа void
| JSP_RET_bool | функция возвращает значение типа bool
| JSP_RET_double | функция возвращает значение типа double
| JSP_RET_int | функция возвращает значение типа int
| JSP_RET_pchar | функция возвращает значение типа char*
| JSP_RET_pwchar | функция возвращает значение типа WCHAR* (wchar_t*)
|
Примеры функций приложения
В каталогах
ATTACH\Example\C++ Builder
ATTACH\Example\Delphi
ATTACH\Example\Visual C++
установочной папки JS+ представлены рабочие проекты приложения JS+ Test, подробно демонстрирующие применение различных функций приложения на платформах C++ Builder, Delphi и
Visual C++.
Совместимость
C++ Builder/Delphi/Visual C++
|
JS+ | Руководство пользователя
|
|
|
|
|
|