splitのバグ?
kntmだよ 2013/7/16(Tue) 22:45:22|NO.55714
HSPで気になった点があったので久々に書き込みます。既出だったり仕様だったりしたらすみません。
sdim s,3
s(0) = "たろう\tじろう"
s(0) = "あい\tうえ\tおか\tきく\tけこ\tさし"
s(1) = "AB\tCD\tEF"
repeat 3
split s(cnt),"\t",res
mes "cnt : "+cnt+"\t\tstat : "+stat
mes "resの要素数 : "+length(res)
foreach res : mes "res("+cnt+") : "+res(cnt) : loop
mes
loop
splitをrepeat-loop中で複数回使っています
実行していただけるとお分かりになるかと思いますが、cnt:2のときにcnt:1のときのゴミが
resに入ってしまっています。どうやら、最大の要素のときの余りが入っているようです。
statは正常なので回避は可能でしたが、これは仕様なのでしょうか。
sdimをやめてstr型変数a,b,cを用意するなどしたりrepeat-loopをやめたりなどしてみましたが、
何も変わりはありませんでした。
HSPのバージョンは3.22です。他のバージョンではまだ試していません。
私の間違いでしたら申し訳ありませんが指摘していただけると助かります。
kntmだよ 2013/7/16(Tue) 22:47:21|NO.55715
ソースコードに間違いがありました。すみません。正しくは下です。
sdim s,3
s(0) = "たろう\tじろう"
s(1) = "あい\tうえ\tおか\tきく\tけこ\tさし"
s(2) = "AB\tCD\tEF"
repeat 3
split s(cnt),"\t",res
mes "cnt : "+cnt+"\t\tstat : "+stat
mes "resの要素数 : "+length(res)
foreach res : mes "res("+cnt+") : "+res(cnt) : loop
mes
loop
暇人 2013/7/16(Tue) 23:27:01|NO.55718
足りない要素を自動拡張するだけで
初期化しないのは仕様でしょう
しない方が繰り返し使う場合処理的な無駄が少ないから
初期化が必要なら自分で出来るし
sdim res
split s(cnt),"\t",res