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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0731
(´ω`)モジュール内の配列変数をナンジャカンジャ5解決


(´ω`)

リンク

2015/7/31(Fri) 17:08:52|NO.70378

とあるモジュールがあります。
このモジュールは、csv形式のテキストを元にそれを2次元配列に入れてナンジャカンジャする
機能があります。

で、グローバル側から、モジュール実行時に生成した配列のサイズやその中身を知りたい
のですが、これはどうすればいいのかしら、という質問です。

例えば、こういう

#module "sample" #deffunc outputcsv str fn result = 0 fname = fn exist fname if strsize > 0 { result = 1 buf = "" : notesel buf : noteload fname tate = noteinfo(0) noteget a, 0 : yoko = 0 : pnt = 0 : siz = 0 repeat nx = instr(buf,pnt,",") if nx = -1 { break } if siz < nx { siz = nx } pnt += nx : yoko += 1 loop sdim cbuf, nx, yoko, tate ; ←こいつ } return result #global
モジュールがあるとします(適当に書いたのでバグは無視で)。

「こいつ」で示した配列cbufの、たてよこのサイズや
1つあたりのサイズ、そして特定の配列の内容を知りたいのです。

どうすればよろしいでしょうか?(´・ω・`)



この記事に返信する


motchy

リンク

2015/7/31(Fri) 17:43:08|NO.70380

勘違いしてたらすみませんが...。

そのモジュールに cbuf 情報を素直に聞きに行くというのはどうですかね?
つまり、モジュール側にその情報を提供する窓口を設ける感じ。

或いは、グローバル空間からモジュール空間内の変数を覗き見することもできますが。


#module sample ifCbufExist = 0 ;cbufがあるのか無いのか。 #deffunc outputcsv str fn result = 0 fname = fn exist fname if strsize > 0 { result = 1 buf = "" : notesel buf : noteload fname tate = noteinfo(0) noteget a, 0 : yoko = 0 : pnt = 0 : siz = 0 repeat nx = instr(buf,pnt,",") if nx = -1 { break } if siz < nx { siz = nx } pnt += nx : yoko += 1 loop sdim cbuf, nx, yoko, tate ; ←こいつ ifCbufExist = 1 } return result #defcfunc yokoOfCbuf if ifCbufExist { return length(cbuf) } else : return -1 #global outputcsv "hoge" ;←勿論無意味だが。 mes length(cbuf@sample) ;※因、length() で長さを調べようとした時にもし cbuf@sample が未定義ならHSPにより自動生成される。


(ん〜、でもこんな簡単なこと訊いてこないよな、普通。私が勘違いしてるのか..?)



KA

リンク

2015/7/31(Fri) 17:56:22|NO.70381

何となく分かるような分からないような・・・。

たてサイズ=tate
よこサイズ=yoko
要素サイズ=nx or 64
配列の内容=cbuf(yoko,tate)

適当に書かれた内容から判断出来るのはここまでです。



kanamaru

リンク

2015/7/31(Fri) 21:21:00|NO.70385

クローン変数作るとか?
あっでも縦横それぞれのサイズは取得できないか。



GENKI

リンク

2015/8/1(Sat) 01:40:08|NO.70393

こういうことでしょうか?

#module sample #deffunc test sdim cbuf, 123, 4, 5 return #global test dupptr sz,varptr(cbuf@sample)-16,4,4 mes sz mes length(cbuf@sample) mes length2(cbuf@sample)

参考:http://hsp.tv/play/pforum.php?mode=pastwch&num=52263



(´ω`)

リンク

2015/8/1(Sat) 13:12:59|NO.70404

皆さま、いろいろとお考えいただき、誠に恐縮です。

変数名@モジュール名 でそのまんま見に行けば良かったですね。
「まさかこんな簡単なことを……」がまさにドンピシャでお恥ずかしい限りです。
申し訳ありません。(;ω;)

あと、motchyさまのおっしゃる通り、モジュールが返事を返すようにすればいいわけで、
そういう事も思いつかなかった自分のバカチンめ。

今後ともよろしくお願い申し上げます。(´・ω・`)



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