新規命令を割り当てる
#deffunc p1 p2,p3…
p1=命令名 : 割り当てられる命令の名前 p2~p9 : バラメータタイプ名
ユーザーによる新規命令を指定します。
p1に新規命令の名前を、p2以降に呼び出しパラメータタイプを指定します。
#deffunc命令で定義した位置より以降は、指定された名前を命令語として
使用することが可能です。
新規命令は、#deffuncで指定された行以降が実行される内容になります。
実行はgosub命令と同じくサブルーチンジャンプとして行なわれ、
return命令でもとの実行位置に戻ります。
追加された新規命令では8つまでのパラメータを指定できるようになります。
それぞれのパラメータに指定できる型はp2~p9で指定します。
指定するパラメータタイプには以下のものがあります。
パラメータタイプ名 内容
---------------------------------------------------
int 数値
str 255文字以下の文字列
val 変数
たとえば、
#deffunc test val,str,int
のように指定すると、以降はtestという命令が使えるようになり、
test 変数, 文字列, 数値
のようにパラメータを指定できるようになります。
ただし、バラメータタイプの指定には、いくつかの制限があります。
1. strタイプで渡せる文字列は255文字以下
モジュールに文字列を渡す場合には、基本的に255文字以下
となります。それ以上の文字数を持つ文字列を渡す場合は、
変数を経由するようにしてください。
2. val,strタイプは、最初の2つのみ指定可能
valおよび、strのタイプ指定は最初の2つにのみ可能です。
つまり、3番目以降のパラメータはすべてintとなります。
それぞれのパラメータは、mref命令のローカルパラメータとして取り出す
ことが可能です。mref命令については、mref命令詳細を参照してください。
#deffunc 名前 onexit
のように、引数を記述する部分に「onexit」を入れることで、
HSPのプログラムが終了した場合に、その命令が自動的に実行されます。
ただし、この命令内では以下の点に注意してください。
・end、stop、wait、await、dialogなど時間待ちが起こる命令は使用できません
・mesなど画面に出力する命令は機能しません
つまり最低限のメモリ解放や外部DLLの呼び出しなど最終的に行なわれる作業だけを
記述するものと考えて下さい。
同様の動作をするものにonexit命令がありますが、システムの処理としては
[HSPのプログラムを中断]
↓
[onexit命令の飛び先を実行]
↓
[モジュールのクリーンアップ先を実行]
↓
[HSPリソースの完全な破棄]
という順番になっています。
onexit命令の飛び先では、プログラムを中断すること自体を中止することも
可能ですが、クリーンアップ機能の場合は中断はできません。
また、複数のモジュールや、複数のクリーンアップ命令が登録された場合には、
登録された順番とは逆順に辿って次々に実行されていきます。
| バージョン | 2.61 |
| 作成日 | 2004/03/01 |
| 著作者 | onitama |
| URL | http://www.onionsoft.net/ |
| 備考 | ver2.61標準命令 |
| タイプ | 内蔵命令 |
| グループ | プリプロセッサ命令 |
| hs ファイル | hsphelp\i_prep.HS |