特殊なメモリを変数に割り当てる
mref p1,p2
p1=変数名 : 割り当てられる変数名 p2=0~(0) : リソースID (割り当てるメモリ内容)
p1で指定された変数に、p2で指定したメモリ内容を割り当てます。
値 対応するリソース
---------------------------------------------------------
0~ 7 ローカルパラメータ#1~8(数値)
16 ローカルパラメータ#1(数値型変数)
17 ローカルパラメータ#2(数値型変数)
24 ローカルパラメータ#1(文字列型変数)
25 ローカルパラメータ#2(文字列型変数)
32 ローカルパラメータ#1(255文字以下の文字列)
33 ローカルパラメータ#2(255文字以下の文字列)
48 ローカルパラメータ#1(数値型配列変数)
49 ローカルパラメータ#2(数値型配列変数)
56 ローカルパラメータ#1(文字列型配列変数)
57 ローカルパラメータ#2(文字列型配列変数)
64 システム変数stat
65 システム変数refstr
66 ウインドゥ内画像データ(VRAM)
67 現在のウインドゥ情報(BMSCR構造体)
96~103 ウインドゥID0~7の情報(BMSCR構造体)
1024 ローカルパラメータ#1情報(PVAL構造体)
1025 ローカルパラメータ#2情報(PVAL構造体)
ローカルパラメータは、ユーザー定義命令(#deffunc)で新規に
追加された命令のパラメータ内容が格納されています。
パラメータのタイプ(数値、変数、文字列)に従って取得することが
可能です。
リソースIDに「ローカルパラメータ」を指定した場合は、モジュール
の呼び出し元(新規命令が実行された時)に指定されていた数値や
変数のクローンとなります。たとえば、「newfunc a」というよう
に変数aがパラメータとして受け渡された時に、モジュール側で、
「mref i,16」を指定すると変数iが変数aと同等のものになります
(dup命令と同様です)。
ローカルパラメータとして、変数をそのまま取得する場合は、
ユーザー定義命令(#deffunc)で指定されたパラメータタイプも
「変数」になっている必要があります。ローカルパラメータとして
取得した変数に値を代入すれば、もとの指定された変数の値も
変化することになります。また、ローカルパラメータに変数を
指定した場合は、指定した変数の型(文字列か数値か)に強制的に
変更されます。
リソースID48,49も、リソースID16,17と同様にローカルパラメータ
変数を取得しますが、こちらは配列の構造を含めた完全なクローン
になります。たとえば、「newfunc a.1」というように配列変数の
一部をパラメータに指定した場合、「mref i,16」では変数iは、
変数a.1と同じになり、配列変数aとは異なるものになります。
これに対して、「mref i,48」の場合は変数iが配列変数aとまったく
同等のものになります。
リソースID64,65のシステム変数は、たとえば「mref i,64」とした
場合、変数aがシステム変数statと同等になり、値を代入することが
できるようになります。
これにより、ユーザー定義命令内の計算結果などをシステム変数に
反映して、呼び出し元に返すことができます。
リソース66のウインドウ内画像データ(VRAMデータ)は、表示されて
いる画像を内容とする配列変数になります。
これにより、poke,peek命令などで画像データに直接アクセスが
可能になります。
また、67以降も同様にHSPの内部データに直接アクセスできるように
するものですが、通常は使う必要はありません。DLLへ渡すための
パラメータ準備のためなど、ごく限られた用途のために用意されて
いるもので、ほとんどの人は使うことはないはずです。
| #deffunc | 新規命令を割り当てる |
| バージョン | 2.61 |
| 作成日 | 2004/03/01 |
| 著作者 | onitama |
| URL | http://www.onionsoft.net/ |
| 備考 | ver2.61標準命令 |
| タイプ | 内蔵命令 |
| グループ | 特殊代入命令 |
| hs ファイル | hsphelp\i_val.HS |