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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0716
kntmだよsplitのバグ?2解決


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



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