resultについての注意事項(Ver8.31対応版)
目次内部的な値を表現するキーワード結果コードと定数− resultについての注意事項
 resultキーワードは、基本的には直前に行った命令の結果を返すことになっています。例えばquestion文を実行した直後には「はい」か「いいえ」のどちらのボタンか押されたかの値を返します。

 したがって、例えばquestion文を実行した直後に、例えば「right;」を実行してしまうと、resultの値は「right」という文についての結果コードに置き換わってしまい、question文の結果は無くなってしまいます。

 そういう訳で、結果コードを後で使いたい場合には、例えば
question "...";
#r = result;
 のように変数に記憶させておかないといけないです。

 ところで、結果コードは1文実行するごとに書き変わるのが普通ですが、以下の場合には結果コードはそのまま維持されます。

 if while等の条件分岐
 ブロックの開始と終了("{"と"}")
 コメント
 goto、cal文、return、breakなどの行き先を制御する文
 ラベル
 代入文

 他に、とても例外的なことですが、resultの値を書き換えない文がいくつか存在します。 しかしそれは作者が意図してそうなったのではなくて、作者の手抜きによって結果としてそうなっているものです。 将来はresultの値を書き換えるような作りに変更されるかもしれないです。

 以下の文は例外的に(現在の秀丸エディタに限って)resultの値を書き換えません。
beep
beginclipboardread
clearallmark
clearupdated
closereg
config
configcolor
ddeterminate
debuginfo
disablebreak
disabledraw
disableerrormsg
disableinvert
enabledraw
enableerrormsg
enableinsert
endsel
envchanged
escapeinselect
execmacro
forceinselect
freedll
loadhilight
loadkeyassign
message
moveto
movetolineno
moveto2
play
playsync
refreshdatetime
saveconfig
savehilight
setfontchangemode
setgrepfile
setmonitor
setreplace
setsearch
setwindowpos
setwindowsize
showwindow
title
writeininum
writeinistr
writeregnum
writeregstr
 他にもあるかもしれないですが、少なくとも以上の文はresultの値を書き換えません。しかし、そのことに依存したマクロは将来動作がおかしくなる可能性があるので、なるべくresultの値は変数に代入して使うよう修正してください。

 V6.00からloadhilightはresultを書き換えます。


戻る