提问:设置richtextbox控件中的SelStart属性值,但得不到正确结果的问题(源代码)
本人使用串口发送字符数据,加载的文件使用richtextbox控件打开,每次从控件中取10个字符发送,一开始想到用Mid$()函数取字符,但是测试中发现一旦加载的文件很大,如2M容量,则程序运行会非常缓慢。后来改用richtextbox控件中的SelStart和SelLength属性设置取字符的位置和长度,运行速度得到了解决,但是在发送中却会丢失一些字符。经过单步运行发现当SelStart的位置刚好在字符char(13)时,SelStart会给自己减1,这样便丢失字符了,请问如何解决以上问题?
以下为该部分的源代码:
slen = Len(RichTextBox1.Text) ‘每次发送10个字符,计算发送的次数
times = Fix(slen / 10) + 1
For i = 1 To times
sendsize = 10 ’设置每次发送的个数
If times = 1 Then ‘如果总共只需发送1次,则每次发送个数为字符总个数
sendsize = slen
End If
If i = times And i > 1 Then ’如果当前为发送为最后1次,则当次的发送个数为剩余字符
sendsize = slen - 10 * (i - 1)
End If
ProgressBar1.Value = 100 * i / times
Label1.Caption = "已完成" & Str(Fix(100 * i / times)) & "%"
RichTextBox1.SelStart = (i - 1) * 10 ‘设置发送位置
RichTextBox1.SelLength = sendsize ’设置发送长度
buf = RichTextBox1.SelText
Comm1.InputMode = comInputModeText ‘通过串口发送
Comm1.Output = buf
Next i