MS ScriptControl в Delphi

4 минуты на чтение

В этой статье хотел бы поговорить о интерпретаторе MS ScriptControl. Немного поговорим о нем, то есть немного теории. В своих проектах, некоторые пользователи хотят использовать какой-нибудь другой язык программирования, например, JavaScript, VBScript, Perl и многие другие, так вот, на помощь, в данном случае, приходит MS ScriptControl. Данный интерпретатор, устанавливается, как ActiveX-компонент. В данный статье, мы рассмотрим, как установить данный компонент и как работать с ним, то есть попробуем выполнить через него простейшую JavaScript-функцию, так как я в JavaScript не силен, то мы рассмотрим функцию суммирования 2-х чисел, ну а чтобы попробовать более серьезное, необходимо будем искать или писать самому функцию. Вообще, многие выполняют JavaScript через TWebbrowser, а уже потом забирают данные, возвращаемые тем или иным скриптом. На самом деле, выполнять JavaScript в Delphi, можно не используя данный компонент, а через создания OLE-объекта, но будет использоваться все тот же интерпретатор.

Ну, а теперь давайте приступим к установке данного компонента. Выполним команду Component-ImportComponent (IDE Delphi XE), после чего появляется окно:


Здесь, мы выбираем Import ActiveX Control и жмем Next>>.


Здесь, выбираем библиотеку ActiveX — Microsoft Script Control 1.0.https://devdelphi Нажимаем кнопку Next>> и в появившемся окне необходимо выставить галочку Generate Component Wrappers.


Ну и наконец-то, нажимаем кнопку Next>> и в следующем окне, нажимаем Finish.

Далее, устанавливаем компонент на форму. На форме у меня следующие компоненты:

  • TMemo
  • TScriptControl
  • TButton

Теперь немного поговорим о свойствах и методах, компонента TSciptControl.

Свойства:

  • Language:String — задается язык, интерпретатор, который и будет выполнять, реализовывать. В стандартной установки, доступны JavaScript и VBScript.
  • TimeOut:Integer — задается время выполнения скрипта, если в течение данного времени, скрипт не будет выполнен, то произойдет генерирование ошибки, если присвоить значение 1, то скрипт будет выполняться неограниченное время.
  • UseSafeSubset:Boolean — если значение данного свойства равно True, то интерпретатор будет выполнять ограниченный набор действий, при выполнение скрипта, которые заданы в настройках Вашей системы.

Ну с основными свойствами разобрались, теперь приступаем к основным методам:

Методы:

  • procedure AddCode — добавляет код языка, который в дальнейшем можно выполнить при помощи метода Run.
  • function Eval — выполняет код, который задан в параметре и сразу же возвращает результат, то есть нет необходимо добавлять перед этим код на выполнение, указывается сразу в параметре.
  • procedure AddObject — добавляет OLE-объект
  • function Run — выполняет код, который был добавлен при помощь процедуры AddCode. В параметрах данной функции, указывается имя функции, которую необходимо выполнить, а также список параметров, передаваемые в данную функцию, если имеется такая необходимость.
  • procedure Reset — думаю сильно объяснять тут не надо. Сбрасывает все настройки, коды и так далее, установленные в данном компоненте ранее.

Ну, что теперь давайте вернемся в наш проект и выполним простую JavaScript-функцию. На событие OnClick нашей кнопки, я написал следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
 pPar:PSafeArray;
 varr,res:Variant;
begin
  try
    ScriptControl1.Language := 'JavaScript';
    ScriptControl1.AddCode(Memo1.Text);
    varr:=VarArrayCreate([0, 1], varVariant);
    varr[0]:=1;
    varr[1]:=5;
    pPar:=PSafeArray(TVarData(varr).VArray);
    res:=ScriptControl1.Run('sum',pPar);
    ShowMessage(IntToStr(res));
  finally
 
  end;
end;

При помощь процедуры AddCode, мы добавляем код JavaScript на исполнение, который находится в TMemo, так вот следующий код JavaScript-функции, который я добавил в компонент TMemo (как и говорил, простая функция суммирования двух чисел):

function sum(b,c) {
	a = b+c;
return a;
}

Ничего сложно тут нету, задаем язык скрипта, добавляем код на исполнение, создаем список параметров, ну и в самом конце, выполняем нашу функцию, указывая имя функции и список параметров. Для того, чтобы использовать тип PsafeArray, не забудьте подключить модуль в usesActiveX.

Ну и напоследок, давайте рассмотрим выполнение кода, без предварительного его добавления, для этого нам потребуется функция Eval.

procedure TForm1.Button2Click(Sender: TObject);
begin
   ScriptControl1.Language:='JavaScript';
   ShowMessage(ScriptControl1.Eval('1+5'));
end;

Как видите, ничего сложного нету.

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Delphi и PHP - это два разных языка программирования, которые имеют разные назначения и особенности. Delphi - это объектно-ориентированный язык программирования, созданный компанией Borland в 1995 году. Он используется для создания приложений для операционных ...
Работа с файлами является одним из фундаментальных аспектов программирования в Delphi, так как файлы используются для хранения и обмена данными между программами и пользователями. Delphi предоставляет множество функций для работы с файлами. Delphi предоставляе...
Delphi и C++ являются двумя различными языками программирования, которые широко используются для разработки программного обеспечения. Delphi - это интегрированная среда разработки (IDE) и язык программирования, разработанные компанией Borland (в настоящее врем...