; ; HSP help manager用 HELPソースファイル ; (先頭が「;」の行はコメントとして処理されます) ; %type 内蔵命令 %ver 2.61 %note ver2.61標準命令 %date 2004/03/01 %author onitama %url http://www.onionsoft.net/ %index int 変数を数値型にする %group 代入命令 %prm 変数名 %inst は変数を数値型に設定します。 ^ 変数の型を変更しても、できる限りその内容を保持しようとします。 "123"という文字列を含んだ変数を数値型に変更すると、123という数値に なります。 ^p int a ^p は変数aを数値型に設定します。 %href str %index str 変数を文字列型にする %group 代入命令 %prm 変数名,p1 変数名 : 対象となる変数名 p1 : 変換のオプション %inst は変数を文字列型に設定します。 変数の型を変更する場合に、それまで保持されていた数値を文字列に変換します。 たとえば、123という数値を含んだ変数を文字列型に変更すると、"123"という文字列に なります。すでに文字列型の変数を指定した場合には、何もしません。 p1の変換モードスイッチを指定することにより、数値を文字列に変換する際の方法を 指定することができます。 ^p 1〜15 : 1〜15ケタの0を含めた10進数に変換 16〜31 : 1〜15ケタの0を含めた16進数に変換 ^p p1が省略されているか0の場合は、通常の10進数に変換されます。 p1に1〜15の数値を指定すると、その桁数で0を含めた形で変換します。たとえば、 123という数値をp1=5で変換すると、"00123"という文字列になります。 また、p1で指定した桁数に16を足して指定すると16進数に変換されます。 256という数値をp1=5+16で変換すると、"00100"という文字列になります。 ^p str a,5 ^p は変数aを0を含めた5文字の数値を保持する文字列型に変換します。 %href int %index val 変数にp1を代入 %group 代入命令 %inst 変数名の後に「=(イコール)」をつけて、その後の数式が示す値を 代入することができます。 基本的な代入は、 ^p tmp=5 ^p のような形式で行ないます。これで、変数tmpに5の値が代入され ます。 p1が文字列の場合は、文字列を変数に代入しそれ以降は文字列型の変数 となります。 「,」で区切ることにより配列変数に連続して値や文字列を代入することができます。 ^p tmp=1,5,10 ; 配列に連続して代入をする ^p 「tmp=1,5,10」は、「tmp.0=1:tmp.1=5:tmp.2=10」と同じことになります。 配列の途中から代入を開始するには、「tmp.2=10,20,50」のように記述します。 この例では、「tmp.2=10:tmp.3=20:tmp.4=50」と同じことになります。 「tmp="ABC","DEF","GHI"」のように文字列を連続して代入することもできます。 この場合は、あらかじめsdim命令などで文字列型の配列を用意しなければなりません。 ^p tmp+=10 ^p は変数tmp自身に10を加算する代入命令です。「tmp=tmp+10」と同じ 意味になります。同じように、 ^p tmp-=10 ^p のようにtmp自身から10を減算する代入命令も存在します。 また、「tmp+」や「tmp-」と記述することで、tmp自身に1を加算したり 1を減算する特殊な代入命令もあります。 ^p tmp+ ; 変数tmpに1を加算 ^p 「tmp+」「tmp-」は、C言語やJavaと互換性のある書式「tmp++」「tmp--」でも 記述することができます。 %href int str %index dup 変数のクローンを作成 %group 特殊代入命令 %prm 変数名1 , 変数名2 変数名1 : クローンを作成する変数名 変数名2 : クローン元の変数名 %inst dup命令は、変数名1に変数名2で指定した変数の機能をコピーします。 以降は、変数名1を変数名2とまったく同じように使うことができます。 この命令が使われる場面は、たとえば、 ^p dup tmp , a.15 ^p のようにすることで、配列変数aの要素15だけをtmpという変数がまったく 同じように使えるようになります。a.15などの配列変数を何個所も参照 している場所があると、いちいち書くよりもtmpという単純な変数として 記述できた方が便利になります。このほか、色々な場面で使うことのでき る命令ですが、そのぶんプログラムを他の人が読みにくくなる可能性も あるので注意してください。 %index mref 特殊なメモリを変数に割り当てる %group 特殊代入命令 %prm p1,p2 p1=変数名 : 割り当てられる変数名 p2=0〜(0) : リソースID (割り当てるメモリ内容) %inst p1で指定された変数に、p2で指定したメモリ内容を割り当てます。 ^p 値 対応するリソース --------------------------------------------------------- 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構造体) ^p ローカルパラメータは、ユーザー定義命令(#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へ渡すための パラメータ準備のためなど、ごく限られた用途のために用意されて いるもので、ほとんどの人は使うことはないはずです。 %href #deffunc