|
h-tom です。
秀丸エディタ Ver.8.33β14
getcollection の使い方で質問があります。
.NET Framework のArrayList が WSH から使えたので、秀丸マクロでも使って
みました。
追加した内容を取り出すのに、コレクションなので、getcollection関数を
使ってみましたが、うまく取り出せません。
(3個しかないのに、それ以上読み出せる。)
そもそも、getcollection の戻り値を文字列で受け取るのが間違っている?
getcollectionで取り出せるのは、オブジェクトだけなんでしょうか?
//サンプルマクロ ここから
#array = createobject("System.Collections.ArrayList");
callmethod #array, "Add", "a";
callmethod #array, "Add", "c";
callmethod #array, "Add", "b";
#n = 0;
$ret = "";
while(1){
$item = getcollection(#array);
#result = getresultex(10);
$ret = $ret + str(#n) + ":" + $item + "-->" + str(#result) + "\n";
if($item == "")break;
//リミッター
#n = #n + 1;
if(#n == 4) break;
}
releaseobject #array;
message $ret;
endmacro;
//サンプルマクロ ここまで
出力結果
---------------------------
秀丸エディタ
---------------------------
0:a-->1
1:c-->1
2:b-->1
3:0-->1 ← 本当は""を期待したけど"0"が帰ってきて、止めないとずっと出力される
---------------------------
OK
---------------------------
実際には、以下のように、"Count"と"Item"使って、読み出しは可能です。
#max = getpropnum(#array, "Count");
#cnt = 0;
while(#cnt < #max){
message getpropstr(#array, "Item", #cnt);
#cnt = #cnt + 1;
}
|
|