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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0406
とあるプログラマポインタから変数に代入することは可能?2解決


とあるプログラマ

リンク

2019/4/6(Sat) 02:02:25|NO.87087

モジュール内定義の命令で変数を指定しそこで変数のポインタを取得(もしくはポインタを引数に渡す)し、oncmdでの割込み時に随時先の命令で設定した変数へ代入 ということをしたいと考えています。しかしHDL確認した限りではポインタから変数に代入する命令は見つかりませんでした。HSPではポインタを元に変数へ代入はできないのでしょうか?
モジュールは簡単かつ軽量を目指していてメインソースでの作業は極力減らしているので、ジャンプ先はモジュール内に設定しておりメイン側でoncmdを検知しメインのジャンプ先で命令呼び出しして処理 というのは避けたいです。モジュール内のジャンプ先でメインの変数に代入することは可能でしょうか。変数名は固定ではないので 変数名@ も使えないです。



この記事に返信する


YOS G-spec

リンク

2019/4/6(Sat) 03:41:12|NO.87088

こういうことではなくて、ですか?


#module #deffunc aa int aptr dupptr a,aptr,vartype("int") mes a a=80 mes a return #global #module #deffunc bb b=70 mes b bptr=varptr(b) aa bptr mes b return #global bb



とあるプログラマ

リンク

2019/4/6(Sat) 09:23:18|NO.87089

>>YOS G-specさん
クローン変数というものの意味が分からなかったのですが、なるほどそういうことですか。クローン変数は複製元とリンクされるのですね。だとしたらわざわざdupptrを使うまでもなくdupでいけますね…
一応検証したソースを貼っておきます。YOS G-specさん、ありがとうございます。

#include "user32.as" #module #deffunc SetCounter var Var dup _Var,Var ;クローン変数作成 SetTimer hwnd,1,100,0 ;100msでタイマー設定 oncmd gosub *jump_Timer,0x0113 ;WM_TIMER return *jump_Timer _Var++ ;100msごとにSetCounterで指定した変数に+1 return #deffunc TimerExit onexit KillTimer hwnd,1 ;終了時にはタイマー破棄 return #global screen 0 i=0 SetCounter i ;カウンターセット repeat //カウンター表示 redraw 0 color 255,255,255 boxf color pos 0,0 mes i redraw 1 await 10 loop



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