HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0227
testHSPSDK HSPの配列の任意の要素に値を代入したい3解決


test

リンク

2011/2/27(Sun) 00:53:39|NO.37286

こんにちは。HSPSDKを利用してdllを作っています。
dll側が受け取ったある配列変数のPValがあるのですが、その配列変数の任意の要素に値を代入しようと思い、hspdll.txtの932行目付近に書いてあることを参考にして次のようにしました。
HspVarCoreReset(p);
exinfo->HspFunc_array(p,offset); exinfo->HspFunc_array(p,0); exinfo->HspFunc_array(p,0); exinfo->HspFunc_array(p,0); code_setva(p,HspVarCoreGetAPTR(p),HSPVAR_FLAG_STR,&data);
pがPValのポインタで、1次元配列のoffset番目の要素にdataの中身を代入しようとしています。 ところが、「配列の要素が無効です」というエラーが出てうまくいきません。
他に、HspVarCoreArrayObjectというマクロを見つけたので
HspVarCoreArrayObject(p,0);
としてみたのですが、そこで呼び出しているArrayObjectが引数を1つしか取らないので2つ渡しているのでエラーになってしまいます。
これはどのようにすればいいのでしょうか。



この記事に返信する


test

リンク

2011/2/27(Sun) 12:36:39|NO.37287

HspVarCoreResetがoffsetとarraycntの値を初期化していることからこの2つの値を調べ、
arraycntは上位16ビットがAPTR(=offset)で下位16ビットが次数になっているようだったので、これらを手動で代入して解決しました。



おにたま(管理人)

リンク

2011/2/27(Sun) 15:15:47|NO.37288

配列要素が1次元であれば、

HspVarCoreReset(p); exinfo->HspFunc_array(p,offset); code_setva(p,HspVarCoreGetAPTR(p),HSPVAR_FLAG_STR,&data);
で大丈夫です。
HspFunc_arrayは、次元の数だけ指定してください。



test

リンク

2011/2/28(Mon) 13:02:53|NO.37297

わかりました。わざわざありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.