Visual Basic中的字符串空间6
发布时间:2020-12-17 00:28:30 所属栏目:大数据 来源:网络整理
导读:我们在VB6应用程序中收到错误,该应用程序通过TCP套接字来回发送数据.我们得到一个运行时错误“超出字符串空间”.有没有人看到这个或有什么想法为什么会发生这种情况?看来我们正在点击一些VB6阈值,所以任何其他的想法也是有帮助的. THKS, AK 正如其他人所指
我们在VB6应用程序中收到错误,该应用程序通过TCP套接字来回发送数据.我们得到一个运行时错误“超出字符串空间”.有没有人看到这个或有什么想法为什么会发生这种情况?看来我们正在点击一些VB6阈值,所以任何其他的想法也是有帮助的.
THKS,
正如其他人所指出的那样,VB中的每个字符串连接将分配一个新的字符串,然后将数据复制到一个可以的位置上,然后将它们解除分配.在循环中可能会导致问题.
要解决这个问题,你可以创建一个简单的StringBuilder类,如下所示: Option Explicit Private data As String Private allocLen As Long Private currentPos As Long Public Function Text() As String Text = Left(data,currentPos) End Function Public Function Length() As Long Length = currentPos End Function Public Sub Add(s As String) Dim newLen As Long newLen = Len(s) If ((currentPos + newLen) > allocLen) Then data = data & Space((currentPos + newLen)) allocLen = Len(data) End If Mid(data,currentPos + 1,newLen) = s currentPos = currentPos + newLen End Sub Private Sub Class_Initialize() data = Space(10240) allocLen = Len(data) currentPos = 1 End Sub 此类将通过强制字符串使用其中的空格来构建字符串数量,然后根据需要覆盖空格来最小化字符串分配的数量.当它发现它没有足够的预先初始化空间时,它会重新分配大小的一半. Text方法将返回实际使用的字符串部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |