FastScriptを使ってみる スクリプトに関数を追加する

スクリプトに関数を追加するには、関数の処理を行うTfsCallMethodEvent型のメソッドを作成して、TfsScriptのAddMethodメソッドで関数とTfsCallMethodEvent型のメソッドを登録します。
関数ごとにメソッドを登録することもできますし、一つのメソッドで複数の関数の処理を行うこともできます。

つまり、スクリプトに関数を追加するには、

  1. 関数ごとにメソッドを用意する方法
  2. 共通のメソッドで処理する方法

の2つの方法があります。

(1)関数ごとにメソッドを用意する方法

全体の手順は次のようになります。

  1. TfsCallMethodEvent型のメソッドを作成します。
  2. TfsScriptのAddMethodメソッドで、関数を登録します。

TfsCallMethodEvent型のメソッドを作成する

Plusメソッドを作成します。

このメソッドは2つの整数を引数にとり、足し合わせた結果を返します。

type
  TForm1 = class(TForm)
  private
    function Plus(Instance: TObject; ClassType: TClass;
      const MethodName: String; var Params: Variant): Variant;

function TForm1.Plus(Instance: TObject; ClassType: TClass;
  const MethodName: String; var Params: Variant): Variant;
begin
  Result := Params[0] + Params[1];
end;

TfsScriptのAddMethodメソッドで、関数を登録する

AddMethodメソッドの最初の引数に関数の文法を、2番目の引数にTfsCallMethodEvent型のメソッドを設定します。

fsScript1.AddMethod(
  'function Plus(I: Integer; J: Integer): Integer', 
  Plus);

(2)共通のメソッドで処理する方法

TfsCallMethodEvent型のメソッドを作成する

CallMethodメソッドを作成します。

このメソッドは、関数名が「Plus」の時は引数を足した結果を返し、関数名が「Minus」のときは引数を引いた結果を返します。

type
  TForm1 = class(TForm)
  private
    function CallMethod(Instance: TObject; ClassType: TClass;
      const MethodName: String; var Params: Variant): Variant;

function TForm1.CallMethod(Instance: TObject; ClassType: TClass;
  const MethodName: String; var Params: Variant): Variant;
begin
  if SameText(MethodName, 'Plus') then
    Result := Params[0] + Params[1]
  else if SameText(MethodName, 'Minus') then
    Result := Params[0] - Params[1];
end;

TfsScriptのAddMethodメソッドで、関数を登録する

fsScript1.AddMethod(
  'function Plus(I: Integer; J: Integer): Integer', 
  CallMethod);
fsScript1.AddMethod(
  'function Minus(I: Integer; J: Integer): Integer', 
  CallMethod);

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください