HSP Tips / HSPモジュール

文字インデックス・ByteSize相互変換

文字位置をバイトサイズに相互変換する。

説明

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