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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0406
変数の初期化をまとめて行う3未解決


リンク

2017/4/6(Thu) 20:50:27|NO.78978

たくさん変数を使うので、変数をたくさん初期化しなくてはなりません。
これを一気にやる方法はありますか?
あったら教えて下さい。
よろしくお願いします。



この記事に返信する


ニョキ太郎

リンク

2017/4/10(Mon) 21:43:43|NO.79066

配列変数で検索かけて、どうぞ



さすらいの旅人

リンク

2017/4/11(Tue) 21:57:17|NO.79083

変数を一括初期化するモジュールなどは私の知る限りはないですね。
私も変数は膨大な量使いますが、スタートアップ時にまとめてdimやsdimで初期化しています。
配列変数を使うのも一つの手です。例えば以下のスクリプトを見ると、


a=1 b=2 c=a+b d=a-b

四つの変数を使用します。これだと初期化する際に四つを初期化しなくてはなりません。そこで配列変数の出番です。
aを配列変数にして上記と同じスクリプトを作ると…。


dim a,4 // 配列変数を作成 a(0)=1 a(1)=2 a(2)=a(0)+a(1) a(3)=a(0)-a(1)

となります。
この場合、aを再利用したい場合はaだけを初期化すればいいので少し楽になります。

このような感じで使ってみてはいかがでしょうか。説明がよくわからないかもしれませんが、参考になるといいです。



bass_clef_

リンク

2017/4/11(Tue) 23:32:19|NO.79085

おもしろそうなので作ってみました。
ポインタとかいろいろ使ってるので使わない方がいいような気がします


#module #deffunc initAllVariables mref hspctx, 68 dupptr hsphed, hspctx.0, 96 // hspctx.hsphed max_val = lpeek(hsphed, 8) // hsphed.max_val ds_ptr = lpeek(hspctx, 12) // hspctx.mem_mds dinfo_ptr = lpeek(hspctx, 16) // hspctx.mem_di dupptr dinfo, dinfo_ptr, lpeek(hsphed, 44) // hsphed.max_dinfo sdim buf repeat char = peek( dinfo, cnt ) if char == 255 : break if char == 254 : continue cnt + 1 + 3 + 2 if char == 253 { ds_offset = lpeek(dinfo, cnt + 1) & 0x00ffffff dupptr varName, ds_ptr + ds_offset, 64, 2 varSize = 0 dupptr pval, hspctx.11 + count * 48, 48, 2 :count++ switch wpeek(pval, 0) case vartype("int") varSize = 4 dupptr value, lpeek(pval, 28), 4, 4 swbreak case vartype("double") varSize = 8 dupptr value, lpeek(pval, 28), 8, 3 swbreak case vartype("str") dupptr size, lpeek(pval, 28)-24, 4, 4 :varSize = size dupptr value, lpeek(pval, 28), size, 2 swbreak swend if 0 != varSize && -1 == instr(varName, 0, "@") { // 安全のためグローバル変数しか初期化しない memset value, 0, varSize } // buf += ""+ varName +" = "+ value +"\n" continue cnt + 1 + 3 + 2 } if char == 252 : continue cnt + 1 + 2 loop // objmode 2 // mesbox buf, ginfo(12), ginfo(13), 5, 0 return #global // なにか代入してみる a = 100 b = "Hellooooooo" c = M_PI initAllVariables mes a mes b mes c



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