〜 スクリプト 〜
システム変数の書換1

システム変数はプログラマが代入するのではなくHSPが自動的に代入する変数です。
通常の変数のように代入しようとしても代入出来ないようになっていますが、
mref命令を用いる方法ならば代入が出来るものも存在します。
statrefstrが書換可能な変数で、書き換え方はサンプルをご覧ください。
また、mref命令はウィンドウ内1ピクセル毎のRGB輝度情報を保持するVRAMや、
HSP3ならそのまま取得可能なハンドル(hwnd)やデバイスコンテキスト(hdc)を格納したBMSCR構造体、
通常変数の情報を保持するPVAL構造体等にアクセスすることができます。
補足ですが、HSP3だとstatrefstrreturn命令でも書き換えることが出来ます。
returnのパラメータに文字列を渡せばrefstrに、整数値ならstatに、実数値ならrefdvalが変更されます。
HSP2のサンプルはmref命令、HSP3はreturn命令による書換を行っています。
	
 1
 2
 3
 4
 5
 6
 7
	mref _stat, 64
	mref _refstr, 65
	mes "代入前 stat=" + stat + " refstr=" + refstr
	_stat = 1       // statを変更する
	_refstr = "abc" // refstrを変更する
	mes "代入後 stat=" + stat + " refstr=" + refstr
	stop
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
	mes "代入前    stat=" + stat + " refstr=" + refstr + " refdval=" + refdval
	gosub*set_stat
	mes "stat後    stat=" + stat + " refstr=" + refstr + " refdval=" + refdval
	gosub*set_refstr
	mes "refstr後  stat=" + stat + " refstr=" + refstr + " refdval=" + refdval
	gosub*set_refdval
	mes "refdval後 stat=" + stat + " refstr=" + refstr + " refdval=" + refdval
	stop

*set_stat
	return 123

*set_refstr
	return "xyz"

*set_refdval
	return 3.14