| 
 |  
| 
 |  
Регистрирует указанную функцию приложения для вызова в контексте выполняемого скрипта 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+ | Руководство пользователя
 |   
 |   
 |  
 |  | 
 |   
 |