説明
WM_GETSELやWM_SETSELなどは一部の環境で文字インデックスだったりバイトサイズだったりと 取得形式がばらばらになってしまうためDelphiのPos関数のような動作を行ないます。HSPスクリプト
//Created by As<akicansoft@gmail.com> #module //指定した変数のバイト位置を文字インデックスに変換 //p1: 文字インデックス値を取得する文字列型変数 //p2: 変換したいバイト位置 #defcfunc ByteToStrIndex var p1, int p2 s2=0 repeat p2 s1=peek(p1,cnt) if ((s1>=$81)&(s1<=$9f))|((s1>=$e0)&(s1<=$fc))=1{ s2+ continue cnt+2 }else{ s2+ } loop return s2 //指定した変数の文字インデックスをバイト位置に変換 //p1: 文字インデックス値を取得する文字列型変数 //p2: 変換したい文字インデックス値 #defcfunc StrIndexToByte var p1, int p2 s2=0 //byteカウント repeat p2 s1=peek(p1,s2) if ((s1>=$81)&(s1<=$9f))|((s1>=$e0)&(s1<=$fc)){ s2+2 }else{ s2+ } loop return s2 #global