テスト用S-JIS文字列(改行付き)の作成
2024/08/02
の続きです。


1バイトずつ読み取って中身を確認 
これを For ~ Next で実行 編。

まず、
テスト用S-JIS文字列(改行付き)の作成2024/08/02
のおさらいです。

Begin
'   Dim SJArray(9999, 200)  AS String
' 9999行の配列として宣言

    Dim PointerX AS Integer
    '半角全角フラグ
    Dim HanZenFlag AS Byte
'   それ用の配列も必要。
    Dim HZArray(200) AS Byte
'    Dim HZArray(9999, 200) AS Byte
' 半角文字:      半角全角フラグ = 0
' 全角文字 第1バイト:半角全角フラグ = 1
' 全角文字 第2バイト:半角全角フラグ = 2
    Dim Ch1st, Ch2nd AS Byte
-----------------------

Dim UnStr As String
Dim SjStr As String

'Str = "ab1234567890"
'Str = "12345"
'Str = "1234512345"

UnStr = "ab123"
' Unicode文字列  10バイト
MsgBox UnStr & "バイト数" & LenB(UnStr)

SjStr = StrConv(UnStr, vbFromUnicode)
' S-JIS文字列  8バイト
MsgBox SjStr & "バイト数" & LenB(SjStr)

SjStr = Sjstr & ChrB(&HD) & ChrB(&HA)
' 末尾に改行を追加。

    If LenB(SjStr) >=2  then
’半角は1バイト、全角は2バイト取り出す
        MsgBox MidB(SjStr, 1, 1) ' "a"
        MsgBox MidB(SjStr, 2, 1) ' "b"

'3文字目 「1」 第1と第2に分ける。
    MsgBox " 1バイト目"
    MsgBox AscB( MidB(SjStr, 3, 1) ) ' 130
    MsgBox "&H" & Hex(AscB( MidB(SjStr, 3, 1) ) ) ' &H82
    MsgBox AscB( MidB(SjStr, 4, 1) ) ' 80
    MsgBox "&H" & Hex(AscB( MidB(SjStr, 4, 1) ) ) ' &H50

'4文字目 「2」
    MsgBox " 1バイト目"
    MsgBox AscB( MidB(SjStr, 5, 1) ) ' 130
    MsgBox "&H" & Hex(AscB( MidB(SjStr, 5, 1) ) ) ' &H82
    MsgBox AscB( MidB(SjStr, 6, 1) ) ' 
    MsgBox "&H" & Hex(AscB( MidB(SjStr, 6, 1) ) ) ' &H51

'5文字目 「3」
    MsgBox " 1バイト目"
    MsgBox AscB( MidB(SjStr, 7, 1) ) ' 130
    MsgBox "&H" & Hex(AscB( MidB(SjStr,7, 1) ) ) ' &H82
    MsgBox AscB( MidB(SjStr, 8, 1) ) ' 82
    MsgBox "&H" & Hex(AscB( MidB(SjStr, 8, 1) ) ) ' &H52


    MsgBox " 9バイト目は"
    MsgBox MidB(SjStr, 9, 1) ' ""
    MsgBox AscB(MidB(SjStr, 9, 1))   ' 13 は〇。

'10バイト目は?
    MsgBox "10バイト目は?"
    MsgBox MidB(SjStr, 10, 1) ' ""
    MsgBox AscB(MidB(SjStr, 10, 1))   ' 10 は〇。

'        Hanzen()
    End If

End


------------------------
今度は、表示を簡略化してみます。
------------------------

'Str = "ab1234567890"
'Str = "12345"
'Str = "1234512345"

'For Next で

Dim UnStr As String
Dim SjStr As String


UnStr = "ab123"
' Unicode文字列  10バイト
'MsgBox UnStr & "バイト数" & LenB(UnStr)

SjStr = StrConv(UnStr, vbFromUnicode)
' S-JIS文字列  8バイト
'MsgBox SjStr & "バイト数" & LenB(SjStr)

SjStr = Sjstr & ChrB(&HD) & ChrB(&HA)
' 末尾に改行を追加。

    Dim I AS Byte

I = 1
’半角は1バイト、全角は2バイト取り出す
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H61
I = 2
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H62

'3文字目 「1」 第1と第2に分ける。
I = 3
    MsgBox " 1バイト目"
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H82
I = 4
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H50

'4文字目 「2」
I = 5
    MsgBox " 1バイト目"
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H82
I = 6
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H51

'5文字目 「3」
I = 7
    MsgBox " 1バイト目"
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H82
I = 8
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H52

I = 9
    MsgBox " 9バイト目は"
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &HD

I = 10
'10バイト目は?
    MsgBox "10バイト目は?"
    MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &HA

'        Hanzen()
End 

------------------------
'今度は、For Next で
------------------------

Begin

    Dim UnStr As String
    Dim SjStr As String


UnStr = "ab123"
' Unicode文字列  10バイト
'MsgBox UnStr & "バイト数" & LenB(UnStr)

SjStr = StrConv(UnStr, vbFromUnicode)
' S-JIS文字列  8バイト
'MsgBox SjStr & "バイト数" & LenB(SjStr)

SjStr = Sjstr & ChrB(&HD) & ChrB(&HA)
' 末尾に改行を追加。

    Dim I AS Byte

    For I = 1  To  LenB(SjStr)

        MsgBox I & " バイト目は?"
        MsgBox "&H" & Hex(AscB( MidB(SjStr, I, 1) ) ) ' &H
    Next

End


#VisualBasic
#VBA
#テキストエディター
#エディター
冷やかしの「いいね」は断ります!