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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
1010
MZ-SOFT二次元配列への数値の入力の仕方。8解決


MZ-SOFT

リンク

2019/10/10(Thu) 00:25:11|NO.88617

二次元配列への数値の入力がうまくいきません。
教えて君で申し訳ないのですが、4,5時間必死に考えました。
誰か助けてください。


#module dim back,256 dim jump_capturePos,32 dim jump_way,32 dim jumpBuf_capturePos, 32, 32 dim jumpBuf_way, 32, 32 dim jumpBuf_captureCount, 32 dim jumpBuf_from, 32 dim jumpBuf_to, 32 dim moveBuf_from, 64 dim moveBuf_to, 64 #defcfunc CaptureInput var jumpNum, var from, var to, var captureCount, local i, local j for i,0,captureCount,1 jumpBuf_capturePos(jumpNum,i) = jump_capturePos(i);ここでエラーとなる。 jumpBuf_way(jumpNum,i) = jump_way(i) next jumpBuf_from(jumpNum) = from jumpBuf_captureCount(jumpNum) = captureCount jumpBuf_to(jumpNum) = to jumpNum += 1 return jumpNum #global



この記事に返信する


f(引っ越し先無いな…)

リンク

2019/10/10(Thu) 09:00:17|NO.88618


#module dim back,256 dim jump_capturePos,32 dim jump_way,32 dim jumpBuf_capturePos, 32, 32 dim jumpBuf_way, 32, 32 dim jumpBuf_captureCount, 32 dim jumpBuf_from, 32 dim jumpBuf_to, 32 dim moveBuf_from, 64 dim moveBuf_to, 64 // これ↓を呼んだだけならそれ↑が実行されてないじゃない。 #defcfunc CaptureInput var jumpNum, var from, var to, var captureCount, local i, local j for i,0,captureCount,1 jumpBuf_capturePos(jumpNum,i) = jump_capturePos(i);ここでエラーとなる。 jumpBuf_way(jumpNum,i) = jump_way(i) next jumpBuf_from(jumpNum) = from jumpBuf_captureCount(jumpNum) = captureCount jumpBuf_to(jumpNum) = to jumpNum += 1 return jumpNum #global // それの初期化用の#deffunc作って、ここら辺から呼び出したり



MZ-SOFT

リンク

2019/10/11(Fri) 02:27:31|NO.88619

質問を簡略化してみました。
これどこが間違っているのでしょうか?


gosub *test stop dim a,32,32 *test for i,0,32,1 for j,0,32,1 a(i,j) = 0;ここでエラーとなる。 next next return



MZK

リンク

2019/10/11(Fri) 08:24:07|NO.88621

横から失礼します。
プログラムの流れを追っていくと、

dim a,32,32

が実行されないのでは?ということかと。
なので、初期化用の命令を実装してその中でdimしたらよいのでは、
ということだと思います。



X

リンク

2019/10/11(Fri) 08:25:00|NO.88622

Dimの前にGosubしてるからでは?



f(引っ越し先無いな…)

リンク

2019/10/11(Fri) 11:23:26|NO.88623

HSPからは


gosub *test stop *test for i,0,32,1 for j,0,32,1 a(i,j) = 0;ここでエラーとなる。 next next return

としか見えない事が原因だな。



MZ-SOFT

リンク

2019/10/11(Fri) 16:12:24|NO.88625

解決しました。ありがとうございました。



Y_repeat

リンク

2019/10/12(Sat) 00:27:50|NO.88627

こんばんわ。解決したとのことですが、解説を少し

MZ-SOFTさんはRubyとかC/C++とか多言語から来た人なのでしょうか

Rubyではルーチンとして通らない場所も実行するっぽいですが
HSPはルーチンとして通ったとこだけ実行します

C/C++とかだと
グローバル変数は関数の外側で定義するっぽいですが
HSPでは基本変数はグローバル変数です
ローカル変数もあるっちゃあるんですが
少々めんどくさいですし、遅いです

で、最初の投稿のdimとかは
ルーチンで通らない場所でdimしてるので
HSPでは意味のない記述になっています
それでも一次元配列はなんとかなるのは
HSPの変数はデフォルトで一次元配列としても動き
配列の
サイズも可変長が可なのでなんとか動きます
dimで定義しているためではないです
(このスレの最初投稿のdimではという意味で)

HSPの2次元配列とかはルーチンで通った時に
サイズを確保するので
dim等で2次元配列を仕様したい時は
2次元配列を定義するdim文を通れば
2次元配列が使えるようになります



MZ-SOFT

リンク

2019/10/12(Sat) 13:15:43|NO.88630

Y_repeatさん、助言ありがとうございます。そのとおりC/C++・C#を主に使っています。



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