为什么我不能在 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 中,为方便起见,您可以将内置常量 vbCrLfvbCrvbLf.

用作 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)