>変数も交えた計算
とのことですが、最終的に出力する値がひとつであれば、evalで解釈する文字列(計算式)内に変数を使うこともできますよ。所詮evalなので。
また、HSPのプログラム側から変数に入力することもできます。
NO.17131に挙げたモジュールを使わせてもらって、簡単なサンプルを作ってみるとこんな感じ。
#module ExpressionEvaluator
#deffunc init@ExpressionEvaluator
newcom mssc, "MSScriptControl.ScriptControl"
comres ret
mssc("Language")="JScript"
return
#defcfunc Eval str exp
_exp = exp
mssc->"Eval" _exp
return ret
#global
init@ExpressionEvaluator
a = 11
b = 22
c = "foo=" + a + ";\n"
c += "bar=" + b + ";\n"
c += "baz=foo+bar;\n"
c += "baz*baz"
mes "入力:"
mes c
mes "\n出力:"
mes Eval(c)
上のサンプルのようにすれば、HSPから変数に代入する(つまりHSP側の変数の中身を見る)ことはいくらでも可能になります。
ただし、evalで解釈する文字列(計算式)内からHSP側の変数の中身を書き換えることはできません。NO.17131で
>変数への代入はともかく
と言ったのはそういう意味です。したがって、複数の値を出力することはできません。
もしそういう必要があるのでしたら、この方法は使えませんです。スルーしてください〜