当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2009年1月20日火曜日

1Byteと2Byteの長さの違い

今日は、1バイト文字と2バイト文字の長さについて考察してみよう。

よくフィールドに入力できる文字列の長さを制限したい。ということがある。
そのような時に使う関数として、Len関数がある。
しかし、これには派生した関数がある。LenB関数とLenBP関数だ。

それぞれ違う結果を返すので、気をつけて使わないと正しい入力チェックができないのだ。
サンプルを見てほしい。
"----*----1----*----2"という文字を1バイトや2バイト文字で表現した場合、それぞれの関数がどういう値を返すのかを表示するものだ。
下図は実際に実行した画面だ。返す値が違っているのが分かってもらえると思う。

1バイト文字と2バイト文字を同じ1文字と考えるのか、そうでないのかを決めた上で、どの関数にするかを決めてほしい。


【サンプルを実行した結果】
1バイト文字の長さ


2バイト文字の長さ


1バイトと2バイト文字をミックスした文字列の長さ



Sub Click(Source As Button)
Dim tmp As String

tmp = "----*----1----*----2"
Msgbox "tmp = " + tmp + Chr$(13) + _
"Len = " + Cstr(Len(tmp)) + Chr$(13) + "LenB = " + Cstr(Lenb(tmp)) + Chr$(13) + "LenBP = " + Cstr(Lenbp(tmp)), 0, _
"1Byte String"

tmp = "----*----1----*----2"
Msgbox "tmp = " + tmp + Chr$(13) + _
"Len = " + Cstr(Len(tmp)) + Chr$(13) + "LenB = " + Cstr(Lenb(tmp)) + Chr$(13) + "LenBP = " + Cstr(Lenbp(tmp)), 0, _
"2Byte String"

tmp = "----*----1----*----2"
Msgbox "tmp = " + tmp + Chr$(13) + _
"Len = " + Cstr(Len(tmp)) + Chr$(13) + "LenB = " + Cstr(Lenb(tmp)) + Chr$(13) + "LenBP = " + Cstr(Lenbp(tmp)), 0, _
"1,2Byte Mix String"
End Sub


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: