〜 テキスト 〜
文字列位置を揃える自前のタブ

HSP3からは、指定文字数により感覚が異なるタブ(\t)を使用することができますが、
HSP2以前では、文字化けが発生するだけで使用することができません。
タブの作り自体は単純で、HSPのタブは半角8文字の倍数サイズに揃えるというだけのものであるため、
どうしてもタブ機能が必要である場合は、自前で作成してしまいましょう。
尚、タブの実装は半角スペースで行っているために、スペースサイズとMS明朝などの等幅フォントではなく、
文字毎に最適なサイズが割り当てられているプロポーショナルフォントを使用すると、綺麗に揃いません。
サンプルではフォントにMSゴシックを使用していますが、同様に等幅のフォントを選択してください。
	

exmes "strings"
"strings"表示するメッセージ、または文字列型変数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#module
#deffunc exmes str
	mref string, 32
	mref bmscr, 67
	ch = bmscr.32 : cw = (ch + 1) / 2             // 文字高さと文字幅
	cx = csrx : cy = csry                         // 初期ポジション
	px = cx :py = cy                              // 表示位置制御用ポジション
	s = string
	strlen len, s
	repeat len
		peek chk, s, cnt
		// 全角文字
		if chk > 128 & (chk < 160) | (chk > 223) {
			len = 2
		// 半角文字
		} else {
			// タブ
			if chk = 9 {
			  px += cw * (7 - (((px - cx) / cw) \ 8)) // 空白不足分を計算してセット
			  continue cnt + 1
			}
			// 改行
			if chk = 13 {
			  px = cx : py += ch                      // X座標は初期位置、Y座標は一段下げる
			  continue cnt + 2
			}
			len = 1
		}
		strmid tmp, s, cnt, len
		pos px, py : mes tmp
		px += cw * len
		continue cnt + len
	loop
	pos cx
	return
#global

	font "MS ゴシック", 20
	pos 10, 10 : mes "12345678901234567890"
	exmes "x\ty"
	exmes "\tz"
	exmes "abcdefgh\tijklmn"
	exmes "ABCDEFGHIJ\tKLMN"
	exmes "あいうえお\n\tかきくけこ"
	stop