为什么我不能在 VB6 TextBox 中拆分从 Android 收到的文本行
Why i can't split text lines received from Android in a VB6 TextBox
我的文本框中有名为 Receivedata 的数据。这个文本框是从我的 android 收到的数据,我的 android 的格式是:
Number_list.BarcodeValue.QuatyValue (/n)
当我收到该数据时,文本框中的结果与 android 发送的格式一致。所以我想通过将它们按行和字符“。”拆分来将它们输入到列表视图中。
但结果是我不能分割线。我设置了 receivedata 文本框多行 "true"。看起来第 1 行和第 2 行的数据合并了。
这是我的代码:
私人潜艇 AddList_Click()
Dim i As Long
Dim sLines() As String
Dim sValues() As String
Dim oItem As ListItem
Dim total As Long
sLines() = Split(receivedata.Text, vbCrLf)
For i = 0 To UBound(sLines)
If sLines(i) > vbNullString Then ' skip for empty line
sValues() = Split(sLines(i), ".")
Set oItem = ListView1.ListItems.Add(, , sValues(0))
Call oItem.ListSubItems.Add(, , sValues(1))
Call oItem.ListSubItems.Add(, , sValues(2))
End If
Next i
End Sub
所以我将数据从 receivedata 复制到记事本,然后合并数据。
为什么那个数据是合并的,在文本框中查看时,他们的数据在不同的行?
接收数据来自mscomm1。
Private Sub Timer1_Timer()
If (MSComm1.InBufferCount > 0) Then
receivedata.Text = MSComm1.Input
End If
End Sub
该数据来自我的 android。
我将应用程序发明家用于我的 android 程序。那个列表数据像这个块一样在 Label3 中。
所以,当我将该列表数据从 hp 发送到 vb 时,我只是将标签发送到 vb。
在 DOS/Windows 机器上创建的文本文件与在 Unix/Linux 上创建的文件具有不同的行尾,Android 也是如此,它基于 Linux 内核。 DOS/Windows 使用两个字符 - 回车 return 和换行符(ASCII 13 + ASCII 10 或 \r\n)作为换行符,Unix 是否使用 just一个字符 - 换行符(ASCII 10 或 \n)。
在 VB6 中,为方便起见,您可以将内置常量 vbCrLf
、vbCr
和 vbLf
.
用作 shorthand
因此,您在接收到的数据中有行结尾,但 Windows 记事本无法仅使用 ASCII 10 显示换行符,即 \n .
顺便说一句,您的代码中应该还有另一个愚蠢的问题,因为您发布了使用两个行结束字符的 Split(receivedata.Text, vbCrLf)
。如果您需要完全解决问题,请随时使用更多代码完善问题。
细化:Number_list.BarcodeValue.QuatyValue (/n) 如下:Number_list.BarcodeValue.QuatyValue (\n)。
在您的接收事件中,按如下方式更改输入字符串:
receivedata.Text = Replace(MSComm1.Input,vbLf,vbCrLf)
我的文本框中有名为 Receivedata 的数据。这个文本框是从我的 android 收到的数据,我的 android 的格式是:
Number_list.BarcodeValue.QuatyValue (/n)
当我收到该数据时,文本框中的结果与 android 发送的格式一致。所以我想通过将它们按行和字符“。”拆分来将它们输入到列表视图中。 但结果是我不能分割线。我设置了 receivedata 文本框多行 "true"。看起来第 1 行和第 2 行的数据合并了。
这是我的代码: 私人潜艇 AddList_Click()
Dim i As Long
Dim sLines() As String
Dim sValues() As String
Dim oItem As ListItem
Dim total As Long
sLines() = Split(receivedata.Text, vbCrLf)
For i = 0 To UBound(sLines)
If sLines(i) > vbNullString Then ' skip for empty line
sValues() = Split(sLines(i), ".")
Set oItem = ListView1.ListItems.Add(, , sValues(0))
Call oItem.ListSubItems.Add(, , sValues(1))
Call oItem.ListSubItems.Add(, , sValues(2))
End If
Next i
End Sub
所以我将数据从 receivedata 复制到记事本,然后合并数据。
为什么那个数据是合并的,在文本框中查看时,他们的数据在不同的行?
接收数据来自mscomm1。
Private Sub Timer1_Timer()
If (MSComm1.InBufferCount > 0) Then
receivedata.Text = MSComm1.Input
End If
End Sub
该数据来自我的 android。 我将应用程序发明家用于我的 android 程序。那个列表数据像这个块一样在 Label3 中。
所以,当我将该列表数据从 hp 发送到 vb 时,我只是将标签发送到 vb。
在 DOS/Windows 机器上创建的文本文件与在 Unix/Linux 上创建的文件具有不同的行尾,Android 也是如此,它基于 Linux 内核。 DOS/Windows 使用两个字符 - 回车 return 和换行符(ASCII 13 + ASCII 10 或 \r\n)作为换行符,Unix 是否使用 just一个字符 - 换行符(ASCII 10 或 \n)。
在 VB6 中,为方便起见,您可以将内置常量 vbCrLf
、vbCr
和 vbLf
.
因此,您在接收到的数据中有行结尾,但 Windows 记事本无法仅使用 ASCII 10 显示换行符,即 \n .
顺便说一句,您的代码中应该还有另一个愚蠢的问题,因为您发布了使用两个行结束字符的 Split(receivedata.Text, vbCrLf)
。如果您需要完全解决问题,请随时使用更多代码完善问题。
细化:Number_list.BarcodeValue.QuatyValue (/n) 如下:Number_list.BarcodeValue.QuatyValue (\n)。
在您的接收事件中,按如下方式更改输入字符串:
receivedata.Text = Replace(MSComm1.Input,vbLf,vbCrLf)