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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0103
きのよーWM_COPYDATAでのデータの信頼性3解決


きのよー

リンク

2014/1/3(Fri) 00:22:29|NO.59102


#deffunc brsendA int p1,str p2 st=p2 dim cds,3 msize = strlen(p2) cds(0) = 0 cds(1) = msize cds(2) = varptr(st) sendmsg p1, 0x004a, hwnd, varptr(cds) return
(参考:http://hsp.tv/play/pforum.php?mode=pastwch&num=45426)
この命令で、p1(ウィンドウハンドル)に対してstという文字列データ(が入ったメモリアドレス?)を送信することができるのですが、
これを随時行うと、たまに(よく)文字列の最後におかしな文字列が付属します。
途中でcds(1)の部分が間違ってしまうのか、原因がわかりません。
誰か知っている人はいらっしゃいますでしょうか?
いらっしゃいましたら、ぜひその原因を教えていただきたいです。
よろしくお願いします。

備考 やりとりするときのソース
(全体ソースは400+200行ほどあるので、載せません)

<送信側(子ウィンドウ)>

#deffunc brsendA int p1,str p2 st=p2 dim cds,3 msize = strlen(p2) cds(0) = 0 cds(1) = msize cds(2) = varptr(st) sendmsg p1, 0x004a, hwnd, varptr(cds) return
(送信する際は、

#define brsend brsendA hdlGetmsg, "hwnd "+hwnd+"\n"+ brsend "url http://www.yahoo.co.jp/"
このような形式で指定します。
)

<受信側(親ウィンドウ)>

oncmd gosub *bwaitaf, 0x004a *getmessage sdim cds dupptr cds, lparam, 12 msize = cds(1) dupptr mrecv, cds(2), msize sdim msg, msize memcpy msg, mrecv, msize dialog msg notesel msg repeat notemax noteget sbuf,cnt if strmid(sbuf,0,4)="exit":exitfrag=1 if strmid(sbuf,0,4)="url ":url=strmid(sbuf,4,512) if strmid(sbuf,0,5)="name ":name=strmid(sbuf,5,512):objprm urlbox_id,url if strmid(sbuf,0,5)="hwnd ":brhwnd=int(strmid(sbuf,5,512)) if strmid(sbuf,0,8)="oncfrag ":oncfrag=int(strmid(sbuf,8,1)) if strmid(sbuf,0,12)="loadingfrag ":loadingfrag=int(strmid(sbuf,12,1)) if strmid(sbuf,0,8)="testsend":brsend "return_testsend" if strmid(sbuf,0,15)="return_testsend":msgtest-- loop return

<送信命令>

brsend "name "+name+"\noncfrag 1\nurl "+url+"\nloadingfrag 0"
(↓展開すると)

brsendA hdlGetmsg, "hwnd "+hwnd+"\n"+ "name "+name+"\noncfrag 1\nurl "+url+"\nloadingfrag 0"



この記事に返信する


sedere

リンク

2014/1/3(Fri) 06:56:31|NO.59113

ヌル文字を考慮してないからかな。
とりあえず送信側でいかに変更してみてください。
msize = strlen(p2)+1



きのよー

リンク

2014/1/3(Fri) 18:19:23|NO.59129

あ…。

>sedere 様
そうでした、ヌル文字を考慮してなかったです。
私としたことが…こんな簡単なことを忘れていたなんて…。
とても簡単な事を質問してしまって申し訳ありません。
ありがとうございました…。



きのよー

リンク

2014/1/3(Fri) 18:19:46|NO.59130

また解決を忘れてしまいました。



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