instr命令がandroid版hsp3dishで正常に働かないという旨のスレッド
http://hsp.tv/play/pforum.php?mode=all&num=59791
を見て、
休憩中にinstrの代替モジュールを作ってみました。
別段面白いものでもありませんが、なんとなく載せておきます。
もしご指摘等ありましたら、どうぞ。
#module N_M_CharStr13 #deffunc MCS_Instr var TEXT ,int Idx_SearchStart ,str _TARGET ; 文字列の検索 ; [ 書式 ] ; ; MCS_instr var ,val ,str ; ; var : 検索される文字列が格納されている文字列型変数名 ; val : 検索を開始するインデックス ; str : 検索する文字列 ; 命令実行後のstatの値とその意味は下記の通り。 ; ; 0以上 : その位置で初めて対象の文字列が見つかった。但しインデックスは val を基点としたもの。 ; -1 : 対象の文字列が見つからなかった。 TARGET = _TARGET length_TEXT = strlen(TEXT) length_TARGET = strlen(TARGET) FirstByte_TARGET = peek(TARGET,0) result = -1 repeat length_TEXT - Idx_SearchStart - length_TARGET + 1 ,Idx_SearchStart if peek(TEXT,cnt) = FirstByte_TARGET { if strmid(TEXT,cnt,length_TARGET) = TARGET { result = cnt - Idx_SearchStart break } } loop return result #global ;++++++++++++++++++++++++++++++ sample ++++++++++++++++++++++++++++++ #include "hsp3dish.as" buf1 = "あいうえおABCDE" buf2 = "Hot Soup Processor スクリプト言語" MCS_instr buf1,0,"えおAB" : x1 = stat MCS_instr buf2,9,"言語" : x2 = stat redraw 0 color 0,0,0 : boxf color 255, 255, 255 pos 0, 0 ;※Android版HSP3dishではスクリプトがUTF-8に変換されるから、日本語文字は3バイトになる。 mes x1 ;Win : 6 , android : 9 mes x2 ;WIn : 20 , android : 15 redraw 1 stop ;++++++++++++++++++++++++++++++ /sample ++++++++++++++++++++++++++++++