byteindex_to_charindex( s1, n1 ) 関数(Ver8.91対応版)
目次関数− byteindex_to_charindex( s1, n1 ) 関数
 バイト位置から文字位置の変換をして、変換された位置を返します。(V8.00以降)

 この数え方の違いを変換して、strlen等の数え方と一致させるためにこの関数があります。
 文字の先頭を 0 として、いくつ目かで計算します。

 以下の例で、"□"がUnicodeの全角文字だとしたら、2を返します。
 "□"がUnicodeの半角文字だとしたら、1を返します。
#a = byteindex_to_charindex( "□abcde", 4 );

 以下の例では、byteindex_to_charindexを呼ぶことによって、strstrの結果と同じ位置を得られることになります。
loaddll "HmJre.dll";
$target = "□abcde";

#a = dllfunc( "FindRegular", "abc", $target, 0 );
#a = byteindex_to_charindex( $target, #a );

#b = strstr( $target, "abc" );
 HmJre.dll V3.13 以降では、dll内のdllfuncで呼び出せる関数としてSetUnicodeIndexAutoConvertという関数が追加されました。
 これを使うと、byteindex_to_charindex, charindex_to_byteindexを使わずに自動的に変換することもできます。
 詳細はHmJre.dllのヘルプを参照してください。

 参照:charindex_to_byteindex