HSP3プログラミング入門講座
powered by Let's HSP!
無料プログラミングツール「HSP」(Hot Soup Processor)の文字列まわりの操作処理に関連した命令・関数を一気に 紹介します。HSPの想定バージョンは3.xです。
文字列操作処理関連の命令&関数など (HSP3) | |
getpath関数 | ファイルパスからファイル名・フォルダ情報の文字列を切り出す 指定英文字列の小文字変換 |
getstr命令 | 特定の1バイト区切り(指定文字、改行、NULL文字)で文字列を切り出し代入する |
instr関数 | 特定文字列を検索して位置を返す |
int関数 | 文字列を整数値に変換 |
note〜命令・関数 | テキストデータの入出力、行単位での文字列を扱えるメモリノートパッド機能 |
poke命令 | 指定位置に文字列を書き込み |
sdim命令 | 文字列型変数・文字列型配列変数のバッファ確保 (デフォルト64バイト) |
split命令 [HSP3.2] | 特定の文字列区切りで文字列を切り出し、指定した各変数に代入する |
str関数 | 整数値を文字列に変換 |
strf関数 | 指定表記(16進数、0埋めや空白スペースによる桁ぞろえ)で文字列を書式変換 |
strlen関数 | 文字列の長さをバイト単位で取得 |
strmid関数 | 指定位置から指定数の文字列を切り出す |
strtrim関数 [HSP3.2] | 文字列から指定文字を取り除く (左側・右側・両端・全体) |
memcpy命令 | 指定位置から指定サイズでバッファをコピー |
memexpand命令 | 中身を維持したままバッファサイズの拡張 |
+ (プラス、加算) |
文字列の結合 |
' (アポストロフィー) |
1バイト文字のASCIIコードを返す |
文字列型変数の基礎
文字列型変数とは、「文字列を格納する入れ物」です。下のコードはそれぞれ同じ結果になります。 sdim命令は明示的にバッファサイズを指定して文字列型変数を確保できます。デフォルトサイズは64バイトで、 ときどき勘違いしてる人を見かけますが、仮にsdim命令で64バイト以下を指定したとしても、最小値の64バイトが 確保されます。
// 代入処理 (64バイト) buf = ""
// 明示的な確保 adim buf, 64
// 明示的な確保 (64バイト) adim buf, 32
// サイズ値を省略した明示的な確保 (64バイト) adim buf
変数の状態はスクリプトエディタのデバッグウィンドウの変数タブで確認 しましょう。チェックボックスの[メモリダンプ]を有効にすると、簡易的な16進数バイナリの状態をチェック でいます。型の名前は「str」(「string:文字列」のこと)になります。
文字列型配列変数の基礎
文字列型配列変数とは、「文字列を格納する入れ物で、その中に仕切りがあるもの」です。下のコードは それぞれ同じ結果になります。仕切りは「要素」という表現で、変数bufは要素番号0〜2が用意されることになります。 デフォルトサイズ(最小値)は64バイトで、変数aは「64バイト×3」のサイズが確保されます。
// 一括の代入処理 buf = "", "", ""
// 個別の代入処理 buf.0 = "" buf.1 = "" buf.2 = ""
// 明示的な確保 adim buf, 64, 3
// サイズ値を省略した明示的な確保 adim buf, , 3
変数の状態はスクリプトエディタのデバッグウィンドウの変数タブで確認 しましょう。チェックボックスの[配列変数]を有効にすると、要素ごとの文字列をチェックできます。 [メモリダンプ]は要素番号0の簡易的な16進数バイナリの状態です。
サンプルコードの切れ端
文字列関連命令や関数を利用した雑多なサンプルソースコード(HSP3向け)をイロイロと書き出してみるみる。
// 1バイト文字とASCII値の相互変換 mes '!' mes strf("%c", '!')
// 16進数と10進数の相互変換 mes int("$" + "FF") mes strf("%#x", 255)
// ASCIIコード表 sdim buf i = $20 repeat 12 poke buf, , strf("0x%X |", i) ii = 6 repeat $10, i poke buf, ii, strf("%3c", cnt) ii += 3 loop mes buf i += $10 loop
// 小文字変換 data = "Hi. Welcome to HSP programming world!" mes getpath(data, 16)
// 文字数(バイト単位)の取得 data = "Hi. Welcome to HSP programming world!" mes ""+strlen(data)+" Byte"
// ファイルパス(URLアドレス)文字列の分解 data = "http://lhsp.s206.xrea.com/hsp_string.html" mes getpath(data, 2) mes getpath(data, 8) mes getpath(data, 32)
// 指定文字の検索 data = "Hi. Welcome to HSP programming world!" mes ""+(instr(data, 0, "HSP") + 1) + " 文字目"
// 指定範囲の文字列切り出し data = "Hi. Welcome to HSP programming world!" mes strmid(data, 15, 15)
// 文字列(1バイト文字)の反転 data = "Hi. Welcome to HSP programming world!" len = strlen(data) sdim kekka, len + 1 repeat len poke kekka, cnt, strmid(data, len - cnt - 1, 1) loop mes data mes kekka
// 指定文字列の出現カウント1 data = "Hi. Welcome to HSP programming world!" i = 0 repeat check = instr(data, i, "o") if check = -1 : count = cnt : break i += check + 1 loop mes ""+count+" コ"
// 指定文字列の出現カウント2 [HSP 3.2〜] data = "Hi. Welcome to HSP programming world!" split data, "o" mes ""+(stat - 1)+" コ"
// 特定区切りで切り出して変数代入1 sdim kekka, 64, 10 data = "Hi. Welcome to HSP programming world!" i = 0 repeat getstr kekka.cnt, data, i, ' ' ; 1バイト文字のみ if strsize = 0 : count = cnt : break i += strsize loop repeat count mes kekka(cnt) loop
// 特定区切りで切り出して変数代入2 [HSP 3.2〜] sdim kekka, 64, 10 data = "Hi. Welcome to HSP programming world!" split data, " ", kekka repeat stat mes kekka(cnt) loop
// 指定文字(1バイト)の除去 [HSP 3.2〜] data = "Hi. Welcome to HSP programming world!" mes strtrim(data, 3, ' ')
正規表現 処理
HSP自体は正規表現の機能をいっさいサポートしてません。
ただ、HSP3はCOMに対応してるので、IE5以降のVBScript(VBScript.RegExpオブジェクト)を呼ぶことで正規表現に
よる文字列の検索や置換を行うことができます。パターンはPerlがベースになってます。付属サンプルの「sample\comobj\comtest8.hsp」(検索)と「sample\comobj\comtest9.hsp」(置換)に実例があります。(→ 参考、Google検索、MSDN)
また、Tatsuo Babaさんが製作された汎用な正規表現ライブラリ「bregexp.dll」を利用する方法もあります。(→ 参考、Google検索)
キーワード de HSP
- 無料プログラミング
- HSPダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本