2009/12/29

Includeは動的に実行できない

例1:
v="a.mscr"
Include(v)
エラーが出る。
Include("ファイル名")

Include(ファイル名
と書き換えても動作するため。(バグ?)

例2:
If(1)
Include("a.mscr")
Message("a")
Else
Include("b.mscr")
Message("b")
EndIf
Includeは実行できない条件でも必ず実行される。
この場合、条件は真なのでElse以降は実行されないはずだが、Include("b.mscr")が実行され、一方でMessage("b")は実行されない。

どうしても動的に実行したい場合、Includeを実行する範囲を初期のみにし、以下のようなスクリプトを実行する。
src &= "Include(""" & path1 & """)^NL^"
src &= "Include(""" & path2 & """)^NL^"
・・・
src &= ReadFile("main.mscr")
WriteFile(src, path)
Run(SystemPath("ScriptExe") \ "MortScript.exe", """" & path & """")
path1~には動的に生成したIncludeするファイルのパスを入れる。
pathには一時的に使用するパスを指定する。
別途メインのソースコードmain.mscrを用意する。

0 件のコメント: