文本框不停的接收数据,到一定程度就死了,说是超出范围就像串口工具一样,不停的接收数据,不清空,但也不出错请问有什么办法可以解决这个问题?谢谢

解决方案 »

  1.   

    用textbox挺耗资源的,如果真的有超过64K的显示内容,说明看的也不会很仔细,前面的丢掉算了。
      

  2.   

    如果只是看一下的话
    可以用listBox控件
    比如只看200行
    当listBox.listcount > 200 时
    每增加一条
    就把最前面的一条删掉
      

  3.   

    richtext 怎么用?listBox 不能粘贴,领导不喜欢程序中判断超过64k怎么判断?
      

  4.   

    richtext 多了很多属性和方法,可以接受超过64K的字符。
    具体的属性和方法到MSDN上找找吧
      

  5.   

    如果就用TEXT 怎么解决这个问题?
      

  6.   

    就是用len(str1)判断要加入的字符长度,设20k,判断文本框中已有字符长度,设为50k,则最起码取最新加入的44k显示覆盖,前面时间的数据删掉。再加上len(str1).
    最好的方法是从一开始就将这些数据写入一个文本文件保存,每次加入时就按上面的方法判断、覆盖、写入。txt文本用流方法读很快。这样保证一直是最新的64k或更少的在文本文件或文本框中。
      

  7.   

    可参考我的文本日志覆盖:    
        i = FreeFile
        Open WhichFile For Binary As #i
        ReDim loadBytes(1 To LOF(i)) As Byte
          Get #i, , loadBytes
            
        '多于删除,回写
        If LOF(i) > 52000 Then
            Dim lngTap As Long, j As Long
            Dim nowbytes(1 To 52000) As Byte
            Dim intNowI As Long
            
            lngTap = LOF(i) - 52000
            For j = 1 To 52000
                nowbytes(j) = loadBytes(j + lngTap)
            Next
            
            intNowI = FreeFile
            Open WhichFile For Binary Access Write As #intNowI
            Put #intNowI, , nowbytes
            Close #intNowI
            .txtLog.Text = StrConv(nowbytes, vbUnicode)
        Else
            .txtLog.Text = StrConv(loadBytes, vbUnicode)
        End If
        Close #i