|
|
При встраивании языка программирования JS+ в приложение, написанное на C++ Builder, необходимо подключить библиотеку JS+ DLL, представленную файлом jsplus_32.dll (здесь и далее
речь идет о файлах, расположенных в каталоге ATTACH папки установки JS+). На данный момент доступна 32-разрядная версия библиотеки, соответственно ваше приложение также должно быть
32-разрядным. Возможны два варианта подключения библиотеки JS+ DLL к приложению C++ Builder: статический и динамический.
Статическое подключение
При статическом подключении файл jsplus_32.dll должен находиться в одной папке с исполняемым файлом вашего приложения и загружается автоматически при его запуске. Для этого вида подключения
выполните следующие действия:
Динамическое подключение
При динамическом подключении файл jsplus_32.dll может находиться в любой папке и загружается по вашему желанию в определяемое вами время. Для этого вида подключения выполните следующие
действия:
В начале работы вашего приложения вызовите функцию:
int JSP_DynDLLSetup(WCHAR *fld_wStr,WCHAR *err_wStr);
Эта функция выполняет динамическую загрузку библиотеки JS+ DLL и получает адреса экспортируемых ею функций. Она имеет следующие параметры:
fld_wStr - содержит путь до файла jsplus_32.dll;
err_wStr - принимает возможное сообщение об ошибке.
В случае успеха функция возвращает значение JSP_OK (0) или JSP_ERROR (-1) в противном случае.
Пример вызова функции JSP_DynDLLSetup (здесь ожидается, что файл jsplus_32.dll находится в папке расположения исполняемого файла вашего приложения):
WCHAR err_wcStr[255];
...
if ( JSP_DynDLLSetup(L"",err_wcStr)!=JSP_OK){
ShowMessage(err_wcStr);
return;
}
// Успешное продолжение
По окончании работы с библиотекой JS+ DLL не следует самостоятельно выгружать ее вызовом функции FreeLibrary(), поскольку библиотека JS+ DLL и работающее с ней приложение имеют
общие данные. Библиотека JS+ DLL будет автоматически выгружена системой Windows по окончании работы вашего приложения.
Выполнение скриптов JS+ из приложения C++ Builder
В начале работы вашего приложения (или после успешного вызова функции JSP_DynDLLSetup, если вы подключили библиотеку JS+ DLL динамически) вызовите функцию JSP_Start:
int jsp_ret;
...
jsp_ret=JSP_Start("TRIAL","");
Если функция вернула значение JSP_OK (0), вы можете выполнять скрипты JS+ в своем приложении и обмениваться с ними необходимой информацией.
Для выполнения скрипта, представленного текстовой строкой, вызовите функцию JSP_RunCode:
WCHAR run_wStr[]=L"alert('Привет, JS+!');";
...
JSP_RunCode(L"",run_wStr);
Аналогичным образом возможно выполнение скрипта, загруженного, например, в поле редактирования TMemo:
TMemo *mem;
...
mem->Lines->LoadFromFile("test.js+");
...
JSP_RunCode(L"",mem->Text.c_str());
Также возможно прямое выполнение скрипта, расположенного в текстовом файле, например, при выборе его через диалог открытия файла:
TOpenDialog *dlg;
...
dlg=new TOpenDialog(NULL);
dlg->Title="Открытие файла ...";
dlg->Filter="JS+ файлы (*.js+)|*.js+";
dlg->DefaultExt="js+";
if (dlg->Execute())
JSP_RunFile(L"",dlg->FileName.c_str());
delete dlg;
Взаимодействие скриптов JS+ с приложением C++ Builder
Библиотека JS+ DLL имеет широкий спектр экспортируемых функций, предназначенных для взаимодействия скриптов JS+ с внешним приложением. Скрипты JS+ могут вызывать функции приложения
C++ Builder, передавая в качестве параметров переменные логического, числового, строкового и объектного типов, а также их массивы. Приложение C++ Builder также может передавать в
скрипт JS+ переменные указанных типов.
В каталоге ATTACH\Example\C++ Builder установочной папки JS+ представлен рабочий проект приложения JS+ Test, подробно демонстрирующий взаимодействие скриптов JS+ с
приложением на платформе C++ Builder (версия RAD Studio 10.3.3 2019).
Совместимость
C++ Builder
|
JS+ | Руководство пользователя
|
|
|
|
|
|