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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0924
kanamarudupptrの使いかた5解決


kanamaru

リンク

2015/9/24(Thu) 17:58:46|NO.71901

いま、自作プログラムのなかでdupptrを使おうとしているのですが、
与えられているのがvarptrで取得したポインタだけしかなく、
クローン変数を作るのに必要な変数サイズと変数型がわからないために
クローン変数を作成できずにいます。
かといって、dup命令を使えないので、どなたかポインタだけからクローン変数を作る命令を
作成していただけないでしょうか?
pval構造体を参照して必要な情報を取得すればできるとは思うんですが、
もちろん、こちらでも努力はします。
その上で誰か作っていただけないでしょうか?
最悪、参考サイトだけでも構いません。



この記事に返信する


kanamaru

リンク

2015/9/24(Thu) 18:13:45|NO.71903

とりあえず、自分で調べた結果を報告させていただきます。
http://d.hatena.ne.jp/chaperatta/20080215/1203074125
によって、
該当変数のpval構造体のポインタがわかれば、
クローン変数が作成できることがわかりました。
問題は、該当するpval構造体のポインタを調べる方法です。
誰かわかりますか?



b

リンク

2015/9/24(Thu) 18:37:30|NO.71904

変数の型はvatypeで変数のサイズは型ごとに決まっています。


#module #defcfunc GetPvalSize var mref PCTX, 68 //HSPCTX構造体の中にPvalのアドレスがある。 dupptr CTXADR, PCTX.207, 4 //HSPCTX構造体からPvalアドレスを取得 dupptr PVAL, CTXADR, 48//PVALアドレスから作成 return PVAL.6//PVALからサイズ(型ごとのサイズ)を取得 #global Val=1234567890 //int = 4 mes "Valの値:" +Val mes "変数Valのアドレス:" +varptr(Val) ValSize=GetPvalSize(Val) mes "Valのメモリサイズ:"+ValSize dupptr Vala,varptr(Val),ValSize,vartype(Val) mes "クローン後Valaの値:"+Vala



kanamaru

リンク

2015/9/24(Thu) 18:37:58|NO.71905

さらにわかったことを報告させていただきます。
hspctx構造体から取得したpvalポインタ+48×cntとかという計算をループにして、
それぞれの構造体から変数ポインタを取得して、パラメータに渡されたポインタと一致したら
その時調べていた構造体から必要な情報を取得すればクローン変数が作れそうです。
ここまでくると、dllを作りたい気分です。



b

リンク

2015/9/24(Thu) 18:39:28|NO.71907

(というか自分で答え見つけてるんじゃ..
>http://d.hatena.ne.jp/chaperatta/20080215/1203074125
)



kanamaru

リンク

2015/9/24(Thu) 18:45:17|NO.71908

bさん、クローン元変数についてわかるのは変数ポインタだけです。
ただ、今後参考にするかもしれません。ありがとうございました。



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