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

 例えばquestion文を実行した直後に、例えば「right;」を実行してしまうと、resultの値は「right」という文についての結果コードに置き換わってしまい、question文の結果は無くなってしまいます。
 そのため、結果コードを後で使いたい場合には、例えば
question "...";
#r = result;
 のように変数に記憶させておかないといけないです。

 結果コードは1つの文を実行するごとに書き変わるのが普通ですが、以下の場合には結果コードはそのまま維持されます。
 他には、例外的に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(V6.00からloadhilightはresultを書き換えます)
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の値は変数に代入して使うようにしてください。

 通常は文を実行した後にresultが設定され、関数を呼び出した場合には設定されません。
 ただし、特別にinput関数とloaddll関数では設定されます。