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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0806
うーreturn命令などでシステム変数に代入する際、二つのシステム変数に代入する方法3解決


うー

リンク

2011/8/6(Sat) 22:22:25|NO.40422

dialog命令のように、statとrefstrの両方に値を代入したいです。


#module #deffunc test /* 各種処理(システム変数代入操作を含む) */ #global test mes stat mes refstr stop

このようにしてシステム変数statとrefstrの両方に値を代入したいのですが、できないのでしょうか?
現在は二つの値を返すために別途関数を用意して


#module #deffunc test /* 各種処理 */ return a #defcfunc testb return b #global test mes stat mes testb() stop

という形にしています。
できそうになければあきらめます。
よろしくお願いします。



この記事に返信する


formdn

リンク

2011/8/6(Sat) 22:34:13|NO.40423

mrefを使えばいけます

#module #deffunc dialog2 str p1 , int p2 mref _stat,64 mref _refstr,65 dialog p1,p2 _stat = stat _refstr = refstr return #global dialog2 "test",3 dialog stat dialog2 "txt",16 dialog refstr



うー

リンク

2011/8/6(Sat) 22:40:38|NO.40424

おお! できた。

formdnさん、ありがとうございました。



HK2

リンク

2011/8/6(Sat) 23:50:39|NO.40425

確信は持っていませんが、refdvalは次のようにするとできそうです。
これはもしかするとバージョンによるものがあるかもしれません。
これが正しく動作しない場合は、HSPが不安定になる、場合によってはOSが不安定になるかもしれません。
実行したことによって起きたいずれの不具合に対し、私は一切責任を負いません。


#ifdef __HSP30__//メジャーバージョンが異なる場合はコンパイルしない。 if(hspver!=0x3208){//マイナーバージョンが異なる場合に停止させる。 mes "Stop:minor" stop } mref hspctx,68 dupptr dstat,varptr(hspctx)+864,8,3 dstat=3.1415926 mes refdval mes dstat #endif

returnに実数型の引数を渡せば済むのですが。


HSPCTXのerrメンバーは2Byteとして計算するようです。
もしくは私の数え間違いかもしれません。
誤りがあれば、ご指摘いただけると光栄です。



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