2009/05/09

CallScript(CallScriptFunction)の仕様

単純にSub~End Subの中身を外部ファイル(以下「関数ファイル」に書き出しただけではなく、関数ファイル内に関数(以下「子関数」)を作ることができる。
ただし、注意点がいくつかある。

親スクリプトから子関数を直接呼び出すことはできない
当たり前だが、CallScript(CallScriptFunction)で呼び出されているのはCallScript(CallScriptFunction)が実行されている間だけなので、CallScript(CallScriptFunction)を実行した後には子関数も消滅する。
そのため、親スクリプトから子関数を呼び出すことはできない。

関数ファイル内でLocalに指定した変数は子関数から読めない
Local()
a = 1
Call("func")
Message(a)
Sub func
Global(a)
a = 2
EndSub
このような関数ファイルを作った時、2が表示されるはずが実際には1が表示される。
これは親スクリプトにLocalを使っても同じである。
親スクリプトの場合はLocalを使う必要性があまりないため気にする必要はないが、関数ファイルの場合はLocalを使う必要性があるため問題が発生する。

関数ファイルからSystemPathを使うと関数ファイル基準になる
SystemPath("ScriptPath"), SystemPath("ScriptName"), SystemPath("ScriptExt")は関数ファイルの情報を返す。

0 件のコメント: