HSPの文字列操作の命令は、ヘボッちいです。
私は、ツールを作成していてこの文字列操作の部分に悩まされたりします。
しかし、必要最低限の命令は用意されているので、覚えましょう。
getstr命令は、変数から文字列を読み出します。
getstr p1,p2,p3,p4 //バッファから文字列読み出し
p1=変数 : 内容を読み出す先の変数名
p2=変数 : バッファを割り当てた変数名
p3=0〜 : バッファのインデックス(Byte単位)
p4=0〜255 : 区切りキャラクタのASCIIコード
,(コンマ)を区切りにしたい場合、','というように指定します。
c = "luna,luna,luna"
getstr out,c,0,',' //変数outに変数cから,区切りで読み出す
mes out
stop
p3には読み出し開始位置を指定します。この場合、変数cの0バイト目からp4で指定されている「,」まで読み出します。
よみだしてやると、読み出したバイト数はシステム変数strsizeに代入されます。
(便利な機能ですが、難しいので覚えなくて結構です。)
c = "luna1,luna2,luna3,"
getstr out,c,0,',' //変数outに変数cから,区切りで読み出す
mes out
getstr out,c,strsize,',' //strsizeを使っているところに注意。
mes out
stop
getstrもあるなら当然?instr関数も存在します。
instr(p1,p2,"p3")
p1=変数名 : 検索される文字列が格納されている文字列型変数名
p2=0〜(0) : 検索を始めるインデックス
"p3" : 検索する文字列
文字列を検索する関数です。"p3"で指定した文字列があるかどうか調べて、ある場合はインデックス値を返します。
この値は、何文字目にその文字があるかをあらわすものです。
見つからなかった場合は、-1が返ります。
c = "luna1luna2luna3"
s = instr(c,0,"luna2") //p3の文字を検索します
if s==-1 : mes "見つかりませんでした。" : else : mes "見つかりました"
stop
変数の中に探している文字列があるかどうかを、instr命令で調べています。
(検索文字列が見つからなかった場合、-1が返るのを利用します。)