mref

特殊なメモリを変数に割り当てる

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新規命令を割り当てる

サンプル逆引き (8)

macro_new2.as
mod_getenv.as
modtest2.as
modtest3.as
modtest4.as
module_test3.as
module_test4.as
test_libload4.as

情報

バージョン2.61
作成日2004/03/01
著作者onitama
URLhttp://www.onionsoft.net/
備考ver2.61標準命令
タイプ内蔵命令
グループ特殊代入命令
hs ファイルhsphelp\i_val.HS