[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

HSPHelp:mref


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構造体)

ローカルパラメータは、ユーザー定義命令(HSPHelp:#deffunc?)で新規に追加された命令のパラメータ内容が格納されています。 パラメータのタイプ(数値、変数、文字列)に従って取得することが可能です。

リソースIDに「ローカルパラメータ」を指定した場合は、 モジュールの呼び出し元(新規命令が実行された時)に指定されていた数値や変数のクローンとなります。 たとえば、「newfunc a」というように変数aがパラメータとして受け渡された時に、 モジュール側で、「mref i,16」を指定すると変数iが変数aと同等のものになります (HSPHelp:dup命令と同様です)。

ローカルパラメータとして、変数をそのまま取得する場合は、 ユーザー定義命令(HSPHelp:#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データ)は、表示されている画像を内容とする配列変数になります。 これにより、HSPHelp:poke?,HSPHelp:peek?命令などで画像データに直接アクセスが可能になります。

また、67以降も同様にHSPの内部データに直接アクセスできるようにするものですが、 通常は使う必要はありません。DLLへ渡すためのパラメータ準備のためなど、 ごく限られた用途のために用意されているもので、ほとんどの人は使うことはないはずです。

備考

ver2.6標準命令


補足

ローカルパラメータ #1 #2 #3 #4 #5 #6 #7 #8
数値 0 1 2 3 4 5 6 7
数値型変数 16 17
文字列型変数 24 25
255文字以下の文字列 32 33
数値型配列変数 48 49
文字列型配列変数 56 57
ローカルパラメータ#1情報(PVAL構造体) 1024 1025

ローカルパラメータ#1〜8は重複してはならない。

参照

  • HSPHelp:#deffunc?命令