VB6文字列の一部をバイト単位で取り出す (LeftB, MidB, RightB)

スポンサーリンク

VB6 では、StrConv 関数を使って Unicode からシステム規定の文字コード (Shift_JIS) に変換した後、LeftB, MidB, RightB (LeftB$, MidB$, RightB$) 関数を使用することで取得できます。

サンプルコード

以下にサンプルコードを示します。

VB6.0 以前
' --------------------------------------------------------------------------------
'       文字列の左端から指定したバイト数分の文字列を返します。
'
' @Param    stTarget    取り出す元になる文字列。
' @Param    iByteSize   取り出すバイト数。
' @Return               左端から指定されたバイト数分の文字列。
' --------------------------------------------------------------------------------
Public Function LeftByte(ByVal stTarget As String, ByVal lByteCount As Long) As String
    LeftByte = StrConv(LeftB$(StrConv(stTarget, vbFromUnicode), lByteCount), vbUnicode)
End Function

' --------------------------------------------------------------------------------
'       文字列の指定されたバイト位置以降のすべての文字列を返します。
'
' @Param    stTarget    取り出す元になる文字列。
' @Param    iStart      取り出しを開始する位置。
' @Return               指定されたバイト位置以降のすべての文字列。
' --------------------------------------------------------------------------------
Public Function MidByte(ByVal stTarget As String, ByVal iStart As Long, Optional ByVal iByteCount As Variant) As String
    If IsMissing(iByteCount) = False Then
        MidByte = StrConv(MidB$(StrConv(stTarget, vbFromUnicode), iStart, iByteCount), vbUnicode)
    Else
        MidByte = StrConv(MidB$(StrConv(stTarget, vbFromUnicode), iStart), vbUnicode)
    End If
End Function

' --------------------------------------------------------------------------------
'       文字列の右端から指定されたバイト数分の文字列を返します。
'
' @Param    stTarget    取り出す元になる文字列。
' @Param    iStart      取り出すバイト数。
' @Return               右端から指定されたバイト数分の文字列。
' --------------------------------------------------------------------------------
Public Function RightByte(ByVal stTarget As String, ByVal iByteCount As Long) As String
    RightByte = StrConv(RightB$(StrConv(stTarget, vbFromUnicode), iByteCount), vbUnicode)
End Function

使用例は以下のようになります。

VB6.0 以前
    ' 必要な変数を宣言する
    Dim stTarget As String
    stTarget = "ABCDEF"

    ' 左端から 6 バイトの文字列を取得する
    Call MsgBox(LeftByte(stTarget, 6))       'ABCD

    ' 左端から 4 バイト以降のすべての文字列を取得する
    Call MsgBox(MidByte(stTarget, 4))        'CDEF

    ' 左端から 4 バイト目から 5 バイトの文字列を取得する
    Call MsgBox(MidByte(stTarget, 4, 5))     'CDE

    ' 右端から 3 バイトの文字列を取得する
    Call MsgBox(RightByte(stTarget, 3))      'EF

関連するリファレンス

準備中です。

スポンサーリンク