|
|
При встраивании языка программирования JS+ в приложение, написанное на Delphi, необходимо подключить библиотеку JS+ DLL, представленную файлом jsplus_32.dll (здесь и далее речь идет о
файлах, расположенных в каталоге ATTACH папки установки JS+). На данный момент доступна 32-разрядная версия библиотеки, соответственно ваше приложение также должно быть 32-разрядным.
Возможны два варианта подключения библиотеки JS+ DLL к приложению Delphi: статический и динамический.
Статическое подключение
При статическом подключении файл jsplus_32.dll должен находиться в одной папке с исполняемым файлом вашего приложения и загружается автоматически при его запуске. Для этого вида подключения
выполните следующие действия:
Динамическое подключение
При динамическом подключении файл jsplus_32.dll может находиться в любой папке и загружается по вашему желанию в определяемое вами время. Для этого вида подключения выполните следующие
действия:
-
скопируйте в папку вашего проекта файлы:
Delphi\Dynamic\JSP_DynHead.pas
Delphi\Dynamic\JSP_DynCode.pas
-
в блок var вашего приложения или отдельного модуля, который будет работать со скриптами JS+ (после имеющихся там переменных), добавьте следующую строку:
{$Include JSP_DynHead.pas}
-
перед кодом первой имеющейся функции или процедуры добавьте следующую строку:
{$Include JSP_DynCode.pas}
В зависимости от структуры вашего модуля, это может быть следующая строка после добавления предыдущей или первая строка в секции implementation.
-
скопируйте в удобную для вас папку файл:
jsplus_32.dll
В начале работы вашего приложения вызовите функцию:
function JSP_DynDLLSetup(fld_Str:string;var err_Str:string): integer;
Эта функция выполняет динамическую загрузку библиотеки JS+ DLL и получает адреса экспортируемых ею функций. Она имеет следующие параметры:
fld_Str - содержит путь до файла jsplus_32.dll;
err_Str - принимает возможное сообщение об ошибке.
В случае успеха функция возвращает значение JSP_OK (0) или JSP_ERROR (-1) в противном случае.
Пример вызова функции JSP_DynDLLSetup (здесь ожидается, что файл jsplus_32.dll находится в папке расположения исполняемого файла вашего приложения):
var
err_Str:string;
...
if ( JSP_DynDLLSetup('',err_Str)<>JSP_OK) then
begin
ShowMessage(err_Str);
Exit;
end;
// Успешное продолжение
По окончании работы с библиотекой JS+ DLL не следует самостоятельно выгружать ее вызовом функции FreeLibrary(), поскольку библиотека JS+ DLL и работающее с ней приложение имеют
общие данные. Библиотека JS+ DLL будет автоматически выгружена системой Windows по окончании работы вашего приложения.
Выполнение скриптов JS+ из приложения Delphi
В начале работы вашего приложения (или после вызова функции JSP_DynDLLSetup, если вы подключили библиотеку JS+ DLL динамически) вызовите функцию JSP_Start:
var
jsp_ret:integer;
...
jsp_ret:=JSP_Start('TRIAL','User=Delphi');
Если функция вернула значение JSP_OK (0), вы можете выполнять скрипты JS+ в своем приложении и обмениваться с ними необходимой информацией.
Для выполнения скрипта, представленного текстовой строкой, вызовите функцию JSP_RunCode:
var
run_wStr:WideString;
...
run_wStr:='Привет, JS+!';
JSP_RunCode('',run_wStr);
Аналогичным образом возможно выполнение скрипта, загруженного, например, в поле редактирования TMemo:
var
mem:TMemo;
...
mem.Lines.LoadFromFile('test.js+');
...
JSP_RunCode('',pWideChar(mem.Text));
Также возможно прямое выполнение скрипта, расположенного в текстовом файле, например, при выборе его через диалог открытия файла:
var
dlg:TOpenDialog;
...
dlg:=TOpenDialog.Create(nil);
dlg.Title:='Открытие файла ...';
dlg.Filter:='JS+ файлы (*.js+)|*.js+';
dlg.DefaultExt:='js+';
if (dlg.Execute()) then
JSP_RunFile('',pWideChar(dlg.FileName));
dlg.Free();
Взаимодействие скриптов JS+ с приложением Delphi
Библиотека JS+ DLL имеет широкий спектр экспортируемых функций, предназначенных для взаимодействия скриптов JS+ с внешним приложением. Скрипты JS+ могут вызывать функции приложения
Delphi, передавая в качестве параметров переменные логического, числового, строкового и объектного типов, а также их массивы. Приложение Delphi также может передавать в скрипт JS+
переменные указанных типов.
В каталоге ATTACH\Example\Delphi установочной папки JS+ представлен рабочий проект приложения JS+ Test, подробно демонстрирующий взаимодействие скриптов JS+ с приложением на
платформе Delphi (версия RAD Studio 10.3.3 2019).
|
JS+ | Руководство пользователя
|
|
|
|
|
|