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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0722
kameplistbox+oncmd gosubで正確な情報が送られない4解決


kamep

リンク

2012/7/22(Sun) 13:37:31|NO.47820

listbox+oncmd gosubで正確な情報が送られません。
以下のスクリプトでその症状が現れます。

問題がでる例(oncmd gosub)

listbox a,30,"0\n1\n2" oncmd gosub *Command,0x111 stop *Command mes a return
0を選んだ時に2が送られたり、
1を選んだ時に0が送られたりします。
具体的に言うと、1つ分情報が遅れて届きます。


正しい情報が送られる例(oncmd goto)
(違いを分かりやすくするため、oncmdのgotoを省略していません。)

listbox a,30,"0\n1\n2" oncmd goto *Command,0x0111 stop *Command mes a stop
0を選んだ時に0が送られ、
1を選んだ時に1が送られ、
2を選んだ時に2が送られます。

comboxではgoto形とgosub形に違いは出ませんでした。



この記事に返信する


inovia

リンク

2012/7/22(Sun) 14:31:28|NO.47821

こちらに書いてあることがズバリ答えだと思いますよ。
http://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200807/08090010.txt



kamep

リンク

2012/7/22(Sun) 14:40:02|NO.47825

失礼同じ様な質問がありました。

ですが
何故comboxでは選択した情報が送られて来るんでしょうか。

comboxと
oncmd gosubの例

combox a,30,"0\n1\n2" oncmd gosub *Command,0x111 stop *Command mes a return

oncmd gotoの例

combox a,30,"0\n1\n2" oncmd goto *Command,0x0111 stop *Command mes a stop

どちらも選択した情報が送られてきます。



MillkeyWeler

リンク

2012/7/22(Sun) 14:49:24|NO.47827

HSP の 「oncmd goto」 仕様がさっぱりなのでわからないが、「oncmd gosub」に関しては、仕様じゃないのかなー?
HSP側(HSP本体という意味)のウィンドウプロシージャで扱っているのを、ソースで処理するようにしてるよね?

HSP本体側で、選択された物を a に格納しようとしてたものの処理を横取りしているんだから、正確な数値が取得できてなくてもそれは、仕様じゃないのかなー。
というか、goto / gosub の動作挙動がいまいちわからんが。

うちは、「goto」は前処理(返却すべて0設定)、「gosub」は後処理(返却任意設定)と思ってるよ。oncmd 系

最後にだけど、oncmd で goto を使うのはやめた(できれば推奨の)方がいいよ。
いろいろと制限が付くし、必ず stop で進行を停止した後じゃないと使えないという・・・・



kamep

リンク

2012/7/22(Sun) 15:17:56|NO.47828

頂いたURLを見て、正確な数値が取得できないのは仕様だと納得できました。
inoviaさんありがとうございました。

comboxの場合は、横取りするよりも先に値を代入しているんですかね。
いまいちcomboxの方はよくわかりません。。


>MillkeyWelerさん
listboxの件は納得しました。ありがとうございます。

>>oncmdでgotoを使うのはやめた方がいいよ
私もoncmd gotoは使わない様にしています。
というか#defineでoncmdとgosubをくっつけていちいち入力しなくても良い様にしています。
あまりそういう使い方は良くないと知っていますが。



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