InputBox не разрешает определенные управляющие символы ASCII - PullRequest
0 голосов
/ 13 февраля 2020

В настоящее время работает с этой строкой, в которую встроены контрольные символы ASCII.

[)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>

Ниже корректно отфильтровываются разделители записей

i = InputBox("Test") 'i = [)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>
i = Split(i, Chr(30)) 
'i(1) = 0617V0B1001PRID-001-A1S99999

Но разделители групп этого не делают. Почему ниже не разделен?

i = InputBox("Test") 'i = [)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>
i = Split(i, Chr(29)) 
'i(0) = [)>0617V0B1001PRID-001-A1S99999

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Спасибо Тиму за то, что он привел меня к правильному ответу. Ниже работал для преобразования ключевых событий в текст.

Private Sub Text0_KeyPress(KeyAscii As Integer)
Dim i As Integer
i = Me.Text0.SelStart
Select Case KeyAscii
    Case 4
        Me.Text0.Text = Me.Text0.Text + "<EOT>"
        Me.Text0.SelStart = i + 5
    Case 29
        Me.Text0.Text = Me.Text0.Text + "<GS>"
        Me.Text0.SelStart = i + 4
    Case 30
        Me.Text0.Text = Me.Text0.Text + "<RS>"
        Me.Text0.SelStart = i + 4
End Select
End Sub
0 голосов
/ 13 февраля 2020

Игнорирование поля ввода, это прекрасно работает:

Dim s As String, arr

s = "[)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>"

s = Replace(s, "<RS>", Chr(30))
s = Replace(s, "<GS>", Chr(29))

Debug.Print s                         '[)>0617V0B1001PRID-001-A1S99999<EOT>

Debug.Print Split(s, Chr(30))(1)      '0617V0B1001PRID-001-A1S99999

Debug.Print Split(s, Chr(29))(0)      '[)>06
Debug.Print Split(s, Chr(29))(1)      '17V0B100
...