§対象ソフト
- Irvine 1.3.1.127 & DMScript 0.3.12
- DMonkey Script Host ver.0.3.9.1
§問題の概要
DMonkey のグローバルオブジェクトの format()
関数において、数値を渡すとエラーが発生する。
テストコード #1
format ('%d', 1+2);
これを実行すると
Exception: EConvertError(1) => Format '%d' invalid or incompatible with argument
というエラーが発生してしまう。%x
にしても同じ。
1+2
を 1
や parseInt (1+2)
に変更すると、エラーは発生しない。
テストコード #2
//var n = 1; // ok
//var n = parseInt (1 + 2); // ok
var n = 1 + 2; // ng
println ('typeof (n) = ' + typeof (n) + ', n = ' + n);
var s = format ('%d', n);
println (s);
テストコード #3
alert (format ('<%*s>', 10+20, 'test'));
エラーは発生しないが幅指定が無視される。
§原因
未調査。
§対策
parseInt()
で数値に変換する。
format ('%d', parseInt (1+2));
§副作用
特に無いと思われる。