hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。 |
内容を保証するものではありません。
変数の値はOperandクラスおよびそのサブクラスに定義されているtoInt()メソッド、toDouble()メソッド、toByteString?()メソッドを呼び出して戻り値として得ることができます。
例えばHSPの整数型変数v(cnt)の内容を取得したい時は、
1
2
3
| - | ! |
|
としてHSP側から
1 |
|
とすれば良いでしょう。
このように、Operand を受け取るときは、必ず次の引数を int にして配列のインデックスを受け取る必要があります(winmm.javaから引用)。
オペランドへの代入にはassign()メソッドを利用します。
このように代入したい値が格納されたオペランドを用意しておく必要がありますが、この際Scalarクラスを利用すると便利です。
ScalarクラスはOperandクラスのサブクラスで、単一の要素だけを持つオペランドをあらわす基本クラス(Scalar.javaより引用)です。staticなメソッドfromValue()にint,double,ByteString?などの型を持つ引数を渡すことで、0番目の要素に引数の内容を格納したオペランドを得ることができます。
例えば、オペランドvの2番目の要素に定数100を代入したい場合は
1 |
|
とします。vが整数型であることを確認するべきでしょう。
変数の型を調べたい時はgetType()メソッドを利用し、Typeクラスの持つ定数と比較します。
1
2
3
4
5
6
7
8
9
10
11
12
| - | - | | | | | | ! | ! |
|
1 2 |
|
1
2
3
4
5
6
| - | | | | ! |
|
各エラーを表す数値(int型)は定数としてHSPErrorクラス(HSPError.java)内に定義されています。
1
2
3
4
5
6
| - | | | | ! |
|
FunctionBase?は関数群クラスの実装に便利ないくつかのスタティックメソッドを持ったクラス(FunctionBase?.javaから引用)です。
関数群クラス作成の際は、このクラスを拡張すると良いかも知れません。
パラメータの省略を許す場合、そのパラメータはint型やdouble型などではなく、Operand型で受け取りましょう。
こうすることで、デフォルト値の指定が可能になります。
例えばpos命令はGuiCommand?クラス内で次のように定義されています。
1
2
3
4
5
6
7
| - | | | | | ! |
|
このように記述すると第1パラメータをxv、第2パラメータをyvで受け取ることになります。
FunctionBase?クラスで定義されているtoInt()メソッドを利用している点に注目してください。
このメソッドを利用することで、省略時のデフォルト値の指定が1行で可能になります。同様にdouble型ならtoDouble()メソッド、String型ならtoString()メソッドが利用できます。
HSP の文字列が MS932 なのに対して Java は UCS-2、また HSP の文字列が可変に対して、Java の文字列は不変など、多くの場面で Java の文字列をそのまま使用することが出来ないので、代わりにこのクラスを使用します(ByteString?.javaより引用)。
文字列の長さを返すlength()メソッドや文字列の比較を行うcompareTo()メソッド、文字列の置換を行うreplace()メソッドなど文字列操作に必要なメソッドはひと通り備わっています。
コンストラクタは複数用意されていますが、既存文字列からオブジェクトを構築するものが最も簡単でよく使う方法でしょう。
引数にString型で初期値を指定するだけでオブジェクトを生成できます。
1 |
|
代入はOperandクラス同様、assign()メソッドを利用します。代入する文字列はByteString?型でもString型でもかまいません。
1 2 |
|
その他 書いてるのはellerさんじゃないです 変数の値を取得 はint型とdouble型は普通に取得できます 表記は 文字列 変数 配列 文字列配列 byte配列 を取得したい時だと思います 値を返すのもint double を普通に返した方が楽そうです
dll 作成 classファイルを作って拡張子をdllにすればいけるはず (拡張子を変更するとは、ツールみたいな処理ではなく、単純に名前の変更をします) classファイルまんまだと数が増えすぎるのですが その場合はellerさんのように 一つのclassに委譲しましょう