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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0106
GrapeColor(DION)hspletでよく分からないエラー7解決


GrapeColor(DION)

リンク

2012/1/6(Fri) 10:49:05|NO.44112

Wed上で動くアプリケーションを開発中なのですが、hspletで使える命令しか使っていないはずなのにエラーが出てしまいます。
エラーダイアログには
java.lang.ArrayIndexOutOfBoundsException:42
と書かれています。
どうやったら直せるか教えてください

#cmpopt optprm 0 screen 0, 200, 40 objsize 200, 40 chkbox "BGMを鳴らさない", mute oldmute = 1 chdir "bgms" notesel filelist noteload "bgmlist.txt" split filelist, "\n", fileone if stat { filepieces = stat } else { stop } randomize mmload fileone(rnd(filepieces)), 0, 1 repeat if mute ! oldmute { if mute { mmstop oldmute = mute } else { mmplay 0 oldmute = mute } } await 100 loop
JavaとHSPは最新バージョン
HSPLetは3.0です。



この記事に返信する


inovia

リンク

2012/1/6(Fri) 10:56:45|NO.44113

確かめてはいないんですが、splitってHSPLetで使えましたっけ?
マニュアルには

Windows 版 HSP
コマンドライン版 HSP
HSPLet

と書いてはあるんですが、HSPLetは3.0のままなので動かない気もします。
違っていたらごめんなさい。



GrapeColor(DION)

リンク

2012/1/6(Fri) 11:00:05|NO.44114

そういえばマニュアルにsplitが載っていなかったので使っていいのかどうか判断できませんでした。



HSP6

リンク

2012/1/6(Fri) 14:14:50|NO.44115

過去のスレッドがありました↓
http://hsp.tv/play/pforum.php?mode=all&num=42799



HSP6

リンク

2012/1/6(Fri) 14:15:31|NO.44116

違っていたらすみません



GrapeColor(DION)

リンク

2012/1/6(Fri) 14:33:03|NO.44117

splitに替わるプログラムを考えてみました

notesel b b="a.mid\nb.mid\nc.mid\nd.mid" repeat c=instr(b,,"\n") if c=-1 { a(cnt)=b mes a(cnt) break } a(cnt)=strmid(b,0,c) mes a(cnt) b=strmid(b,c+1,notesize) loop
>>HSP6さん
コンパイルの問題ではないと思います。
ちゃんと
#cmpopt optprm 0
入れてますし。



GrapeColor(DION)

リンク

2012/1/6(Fri) 15:12:07|NO.44118

splitを使わずに代替プログラムを組んで対処できました。
最終的にこういうプログラムになりました。

#cmpopt optprm 0 assert screen 0, 200, 40 objsize 200, 40 chkbox "BGMを鳴らさない", mute oldmute = 1 chdir "bgms" notesel filelist noteload "bgmlist.txt" if filelist = "" : stop repeat breakpoint = instr(filelist, , "\n") if breakpoint = -1 { filechoose(cnt) = filelist filepieces = cnt + 1 break } filechoose(cnt) = strmid(filelist, 0, breakpoint) filelist = strmid(filelist, breakpoint + 1, notesize) await 1 loop randomize mmload filechoose(rnd(filepieces)), 0, 1 repeat if mute ! oldmute { if mute { mmstop oldmute = mute } else { mmplay 0 oldmute = mute } } await 100 loop
inoviaさん有難うございました。



HSP6

リンク

2012/1/6(Fri) 18:01:59|NO.44121

あっ...本当だ
すみません



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