overwriteの動作についてNo.13409
tsuchi-s さん 02/11/18 08:33
 

こんにちはtsuchi-sです。
早速ですが、例えば

$list[0]="a";
$list[1]="b";
$list[2]="c";
menuarray $list,3;
if(result == 0) endmacro;
else{
message $list[result-1];
overwrite $list[result-1];
}

というマクロを実行させるとメッセージはメニュー通りなのですが
上書きされる文はすべて"a"です。
私の理解ではメッセージと上書きされる文は本来は同じだと
思うのですが、どうなのでしょうか?

$list[0]="a";
$list[1]="b";
$list[2]="c";
menuarray $list,3;
if(result == 0) endmacro;
else{
message $list[result-1];
test= $list[result-1];
overwrite $test;
}

とすると私が期待する動作をします。


詳しいかたの意見を聞きたいです。

秀丸Ver3.17 + Windows98 +IE6.0

[ ]
RE:13409 overwriteの動作についてNo.13412
ENCODINGSHIFTJIS さん 02/11/18 10:08
 
overwrite の中では result は常に1のような振る舞いです。

揮発性 volatile な変数を使うとき、#r=result;
などで受けてから使わないときの解釈は微妙です
if では使えるが、overwriteではダメの理由とか?

[ ]
RE:13412 overwriteの動作についてNo.13416
ひろ さん 02/11/18 13:25
 
 ENCODINGSHIFTJIS さん今日は、ひろです。
> overwriteではダメの理由とか?
 overwrite ではなく、menu(array) の問題のようです。ここではなく、
http://www.maruo.co.jp/turukame/3/m020222.html#805
にて報告済みの不具合と原因は同じでしょう。

[ ]
RE:13416 overwriteの動作についてNo.13424
秀丸担当 さん 02/11/18 17:45
 
> overwrite ではなく、menu(array) の問題のようです。ここではなく、
>http://www.maruo.co.jp/turukame/3/m020222.html#805
>にて報告済みの不具合と原因は同じでしょう。

この問題ですが、やはりresultはまず変数に代入してから使うように
してください。
menu,menuarrayだけでなく、ほとんどの文はresultの値をまず先に見
ないと考えてください。

[ ]
RE:13424 overwriteの動作についてNo.13428
ひろ さん 02/11/18 19:00
 
 秀丸担当さん今日は、ひろです。
> この問題ですが、やはりresultはまず変数に代入してから使うように
> してください。
> menu,menuarrayだけでなく、ほとんどの文はresultの値をまず先に見
> ないと考えてください。
 ということは、これは仕様ということですね。

[ ]
RE:13424 overwriteの動作についてNo.13434
tsuchi-s さん 02/11/19 02:11
 
 tsuchi-sです。

>この問題ですが、やはりresultはまず変数に代入してから使うように
>してください。
>menu,menuarrayだけでなく、ほとんどの文はresultの値をまず先に見
>ないと考えてください。

ご返答、ありがとうございます。そのように致します。
既に使っているresult文を含むマクロも書き換えた方がよいのでしょうか?
今、上手く動いているものは大丈夫ということでしょうか?

とにかく次からは「resultは代入して使う!」ということに気をつけます。
ありがとうございました。

[ ]
RE:13428 overwriteの動作についてNo.13443
秀丸担当 さん 02/11/19 18:57
 
> ということは、これは仕様ということですね。

仕様ということでお願いします。

[ ]
RE:13434 overwriteの動作についてNo.13444
秀丸担当 さん 02/11/19 18:57
 
>既に使っているresult文を含むマクロも書き換えた方がよいのでしょうか?
>今、上手く動いているものは大丈夫ということでしょうか?

今うまく動いているものならば大丈夫だと思います。
安全なものにするためには、書き換えるとより確実になると思います。

[ ]
RE:13443 overwriteの動作についてNo.13448
ひろ さん 02/11/19 19:37
 
 秀丸担当さん今日は、ひろです。
> > ということは、これは仕様ということですね。
>
> 仕様ということでお願いします。
 解りました。私も result は保存してから使用するようにします。

[ ]