JvInterpreterにPlus関数を組み込むには、GlobalJvInterpreterAdapterでTJvInterpreterAdapterを取得して、AddFunctionメソッドで登録します。
実行する関数はTJvInterpreterAdapterGetValue型になります。
###JvInterpreterに関数を組み込む
JvInterpreterにPlus関数を組み込みます。
JvInterpreterProgram1のPasプロパティに実行するコードを設定します。
unit Unit1;
function Main: Integer;
begin
Result := Plus(10, 20);
end;
end.
関数を組み込むには、GlobalJvInterpreterAdapterでTJvInterpreterAdapterを取得して、AddFunctionメソッドで登録します。
GlobalJvInterpreterAdapter.AddFunction(
'Unit1', //ユニット名
'Plus', //関数名
Form1Plus, //実行する関数
2, //関数の引数の数
[varInteger, varInteger], //引数の型
varInteger //返値の型
);
実行する関数はTJvInterpreterAdapterGetValue型になります。
引数Argsには関数の引数が設定されます。
引数Valueには関数の返値を設定します。
procedure Form1Plus(var Value: Variant; Args: TJvInterpreterArgs);
begin
Value := Args.Values[0] + Args.Values[1];
end;
ボタンを押したときに登録したコードを実行します。
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
//Plus関数を組み込む
GlobalJvInterpreterAdapter.AddFunction('Unit1', 'Plus', Form1Plus, 2, [varInteger, varInteger], varInteger);
I := JvInterpreterProgram1.CallFunction('Main', nil, []);
Memo1.Text := IntToStr(I);
end;