〜 テキスト 〜
テキストを特定の半角文字毎に分割

HSP3.1では、テキストを任意の区切り文字毎に分割して返す命令・関数が用意されていないので、
「ループでgetstr命令により分割してるだけ」という単純な処理ですが、サンプルとして載せておきます。
HSP3.2からはsplit命令が追加されているので、このTipsは必要なくなりましたが、
HSP3.2以降でも使用する場合、命令が衝突することなく同様の動きをさせるため、
1行目で命令定義を取り消しています。HSP3.1で動かす場合#undef自体をを外しても問題ありません。
分割に成功すると、分割数がstatに返ります。

上記の通り、実際に分割に使用しているのはgetstr命令であるため、区切り文字は半角1文字限定です。
2文字以上または全角文字を区切り文字に使用したい場合はコチラのサンプルを参照してください。
但し、変数2つと、区切りテキスト用の文字列1つの、数値ではないパラメータが合計3つとなるので、
制約によりHSP2では使用できず、HSP3以降用としています。
尚、配列に分割した複数のテキストデータを1つにまとめるにはコチラのサンプルを参考にしてください。
	
split 格納配列, 対象変数, デリミタ
格納配列分割結果を受け取る文字列型配列変数を指定する。
対象変数分割対象の文字列型変数を指定する。
デリミタ1バイトの区切り文字をコード(数値)で指定する。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#module
#deffunc split val, val, int
	mref ary, 56 : mref string, 25 : mref code, 2
	mref stt, 64
	i = 0
	strlen i.1, string
	repeat
		getstr ary.cnt, string, i, code
		i += strsize
		if i >= i.1 : stt = cnt + 1 : break
	loop
	return
#global

	sdim list, 12, 5
	data = "apple/orange/grape/banana/strawberry"
	split list, data, '/' // スラッシュコードを区切り文字として分割
	mes "分割数:" + stat
	repeat 5
		mes "" + cnt + ". " + list.cnt
	loop
	stop
split 格納配列, 対象変数, デリミタ
格納配列分割結果を受け取る文字列型配列変数を指定する。
対象変数分割対象の文字列型変数を指定する。
デリミタ1バイトの区切り文字をコード(数値)で指定する。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#undef split
#module
#deffunc split array ary, var string, int code, local i
	repeat
		getstr ary.cnt, string, i, code
		i += strsize
		if i >= strlen(string) : i = cnt + 1 : break
	loop
	return i
#global

	sdim list, 12, 5
	data = "apple/orange/grape/banana/strawberry"
	split list, data, '/' // スラッシュコードを区切り文字として分割
	mes "分割数:" + stat
	foreach list
		mes "" + cnt + ". " + list.cnt
	loop