Pascal Script for Delphiでわかってきたこと。

ども、Norimakiです。

自作のツールにスクリプトを組み込もうということで、
前回、Pascal Script for Delphiを導入してみました。

で、早速サンプルを実行してみようと。

そう思って色々とデモファイルを見てみたら、
実行できない物が多かったという悲劇に襲われました。

実際に実行できたのはテストアプリケーション1つのみ。
他にも色々と出来そうな感じのファイルがあるんですが、
何かとエラーが表示されてコンパイルすら通らないという始末。

まぁ、そういうことでテストアプリケーションから分かったことを
書きとどめておこうかと。

まず、TPSScriptというコンポーネントが大元のコンポーネントのようで、
このコンポーネントにスクリプトソースなどを設定するようです。

では、行きます。

TPSScriptコンポーネントのScriptプロパティにスクリプトソースを設定します。

みたいな感じです。

とかってやりたいんですけどダメなんでしょうかね。

で、その次は、コンパイル、実行。という手続きを踏みます。

・Compileメソッド
・Executeメソッド

でそれぞれ実行します。

実行した後、成功すればTrue、失敗すればFalseが返ってきますので、
それなりの処理をします。

この際、

Compileメソッドを実行すると、

OnExecImportイベント
OnCompImportイベント
OnCompileイベント
OnVerifyProcイベント

がこの順で呼ばれるようです。

Executeメソッドを実行すると、

OnExecuteイベント
OnLineイベント
OnAfterExecuteイベント

が呼ばれるようです。

この他にも呼ばれるイベントが有るかとは思いますが、
現時点でわかっているのはこんな感じ。

で、最低限必要なのは、

OnExecImportイベント
OnCompImportイベント
OnCompileイベント
OnExecuteイベント

のようです。

サンプルを見ていただくとわかると思うんですが、

OnExecImportイベント
OnCompImportイベント

の2つについては、

こんな感じで書かれていて、そのまま使うのが良いのかなと。
何をやってるのかサッパリわかりません。

で、OnCompileイベントでは、コンポーネント等や関数・メソッドを
スクリプトエンジンに登録するという作業をします。

AddRegisteredVariableでコンポーネント等を登録します(と言うか型宣言?)。
AddFunctionで関数を登録します。
AddMethodでメソッドを登録できるようです。

AddRegisteredVariableについては、

みたいな感じで使用して、コンポーネント名、クラス名。といった感じで
使うのかなと。

AddFunctionについては、

のように使用します。いわゆる宣言部って感じでしょうか。

実際の関数は、

なんて実装をするみたいです。

procedure TForm1.xxxx;

という感じではなく、

procedure xxxxxx;

って感じで。

TForm1のメソッドを登録したい場合は、

という感じで登録するんだそうです。

でもって、OnExecuteイベントですが、

こんな感じで、実際のコンポーネントとスクリプト上の名前を紐つけます。

最初の引数が OnCompile イベント内で使用したAddRegisteredVariableの
1番目の引数に対応していて、2番目の引数が実際のコンポーネントに
対応していると。

そんな感じです。

とりあえずこんな感じで、

OnExecImportイベント
OnCompImportイベント
OnCompileイベント
OnExecuteイベント

この4つのイベントを実装したら、とりあえず動くのかなと。
あとは、作りながら調べていくしかありません。

ちなみに、テストアプリケーションではSelfでForm1を指す
ということを定義していますが、スクリプト内で、Self.Hide;
なんてやろうものなら、フォームが非表示になってしまうという事態になります。

便利な半面、ちょっと厄介ですね。

ではでは。
Norimakiでした。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする