秀丸マクロでmenu、menuarrayを使うときはresultに注意

秀丸でマクロを作っていて少し引っ掛かった部分があったのでメモしておきます。

秀丸でリストボックスを作るときはmenuやmenuarrayを使います。
例えば次のように書いたとします。

menuarray $words,10;
if(result==0)endmacro;
insert $words[result-1];

選択した文字列を挿入するというマクロですがこれだと正しく動きません。
リストが出た状態でEscキーなどを押してキャンセルする場合を想定して「if(result==0)endmacro;」の行があります。
キャンセルされた場合はresultに「0」がセットされるので、この場合はマクロを終了させます。
終了しない場合は次の行に処理が移るのですが、この段階ではresult=1(成功)となってしまうようです。
したがって、$wordsという配列変数では常に[0]が引かれるため、意図した通りになりません。

menuarray $words,10;
#temp=result;
if(#temp==0)endmacro;
insert $words[#temp-1];

このように一度、変数に取り込むとよいです。

コメント

タイトルとURLをコピーしました