|
Scripting.Dictionaryのsetpropnum,setpropstrの問題について
今までaddメソッドで追加して取得しかしてこなかったので気づきませんでしたが、
秀丸メールの方で後で値を変更する必要が生じたのでsetpropxxxを使いましたが上手く値が変わらない。
でテストプロ作って検証した結果
Itemプロパティの解釈を間違えているように思える。
Microsoftのページでは
構文
オブジェクト.Item(key) [ = newitem ]
となっていて、= newitemが有る場合が設定、無い場合が取得になります。
VBScriptで書くと値を設定する時のItemプロパティは
(1) objHash,Item(key) = val
または
(2) objHash(key) = val
と書きます。
これを秀丸マクロで書くと
(1) setpropstr #objHash, "Item", $key, $value;
(1) setpropnum #objHash, "Item", $key, #value;
または
(2) setpropstr #objHash, $key, $value;
(2) setpropnum #objHash, $key, #value;
になると思います。
(2)は上記MSのページの構文外なのでVBScript固有かもしれないということでサポートしなくていいと思いますが、
(1)がうまく働いていないです。
まずsetpropstr ですが値が変わらない。getresultex(10)がfalseを返し
getresultex(11)の値が0x8002000Eになります。
「DISP_E_BADPARAMCOUNT 0x8002000E パラメーターの数が無効です。」
次にsetpropnum ですが、マクロエラー:数値が指定されるべき所に数値以外のものが指定されています。
となります。
==環境==
[Windows]
エディション:Windows 10 Pro 64bit
バージョン:22H2
OSビルド:19045.5247
[秀丸エディタ]
バージョン:9.39 64bit
以上調査よろしくお願いします。
|
|