コンソールHSP "hsp3cl" で同じ行に文字列を出力する

コンソールHSP "hsp3cl" で同じ行に文字列を出力する

コンソールで処理中の処理のパーセンテージ表示するときとかに使われるアレをHSPでやってみた。
やり方としては、キャリッジリターン (\r, CR, 0x0d, 13) して行頭から文字列を出力するようにすればいいだけなんだけど、HSP の mes だと最後に改行コードが付いちゃうから、改行した後に行頭に戻しても意味ないよねって話。
なので、putchar で出力することにします。printf 呼び出せたら楽なんだけど、HSP で可変長引数扱う方法がわからなかった…orz
幸い、 HSP が "\r"のエスケープシンスに対応しているので、地道に poke する必要とかはないです。 

// コンソール
#runtime "hsp3cl"

// 改行なし mes
#module hspio

#uselib"msvcrt.dll"
#funcputchar"putchar" int

#deffunc mes2 str p1
buf = p1
repeat strlen(buf)
putchar peek(buf, cnt)
loop
return

#global

// サンプル
// 1 ~ 128 までカウントする
repeat 128, 1
mes2 "\r" + cnt + "/128"
await 100
loop
// 最後改行がないので改行
mes ""

// おまけ
mes "finished"

これで HSP でも かっこいい (?) 表示ができそうです。
ではまたいつか~。
↓ブログランキング投票 (クリック) お願いします~