[TOP]     [開発風景]     [スクリプト]     [プラグイン]     [リンク]     [Other]     [掲示板]

スクリプトの分割開発

Last update 2001/02/07

ここでは、分割して開発したスクリプトを、一つのスクリプト のように実行する方法について解説します。 実行の際には、若干注意する点があります。 「注意点」の項目を参照してください。
分割するときのコツなどについては……… ご存知の方はぜひ私にも教えてください。
# タイトルからすれば、それこそがメインの内容であるはずなのですが………

読んで実行 → 任務完了

前述のように内容を限定すると、目的のために必要なのは、 いかにして 他のスクリプトを読みこむか、 どのようにして実行するかだけです。

読み方

まず、ファイル操作を行うためにファイルシステム用の オブジェクトを参照できるようにします。 あとは、各オブジェクトから順にデータを取得していき、 最終的にファイルの内容を文字列として変数に代入します。
以下に、サンプルを掲載します。 ここではごらんの通り、ファイル操作を行うために「JScript」 の関数をばしばし使用しています。 私自身サンプルを剥ぎ取ってきて使っているレベルなので、 詳細は
「参考」の項目から JScript の項目を参照してください。

var ForReading = 1;
var TristateFalse = 0;

var filespec = "何か適当なファイル名";

var fsys = new ActiveXObject("Scripting.FileSystemObject");
var file = fsys.GetFile(filespec);
var textstream = file.OpenAsTextStream(ForReading, TristateFalse);
var str = textstream.ReadAll();
textstream.Close();

とはいえ、それではいくらなんでもひどいので、 わかる範囲で解説を……… → [サンプル解説]

実行

ファイルの読み込みに比べると、いたって簡単です。 読みこんだファイルの文字列を、関数 eval() に渡します。
eval(str);
後はもう何も言うことがありません。
なお、JScript として無効な文字列を渡すと、eval() だけでなく 全体がストップします。

注意点

実行する場所

読みこんだスクリプトの実行を関数から行うと、 意図したように実行されません。 正確には、その関数が終了すると、せっかく読みこんだ関数や オブジェクトが無効になります。 それ以降、読みこんだつもりの関数やオブジェクトを 呼び出そうとすると、エラーになります。

これを逆手に使えば、凝ったスクリプトの実行が可能であり、 (もしかすると)効率化できるかもしれません。 凝った実行のほうはスクリプト開発者の工夫次第ですが、 効率化の方はスクリプトエンジンの内部処理にかかっており、 書いている私自身眉唾物です。
# やりようはあると思うのですが………

デバックが………

まだデバックが必要なスクリプトを読こむと「大変」です。
スクリプト実行中にエラーが発生すると、エラーの発生した 行番号を教えてくれるダイアログが表示されます。 私はこれを参考にバグの場所を探しますが、 スクリプトを読みこんで実行する場合、読みこんだスクリプト の行番号が表示されます。(eval() が使用されている行番号)

エラーに伴うメッセージが表示されるので 全然役に立たないということはありませんが、 構文エラーの発見をコンパイラにまかせている私には大問題 でした。


参考

[JScript]
Microsoft のスクリプトに関するサイトです。

[開発風景]
[TOP]     [スクリプト]     [プラグイン]     [リンク]     [Other]     [掲示板]

mailto3m@yahoo.co.jp

Since befor 1999.02.06