vb循环溢出

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:40:25
Global ByteArray() As Byte
Global ByteArrayReplace() As Byte
............
sFindWhat = String$(1024, 0)
Dim nByte As Long
sFindWhat = mTxtBox.SelText
ReDim ByteArray(0 To 1024) As Byte
For nByte = 0 To Len(sFindWhat) - 1
ByteArray(nByte) = Asc(Mid$(sFindWhat, nByte + 1, 1)) '这里遇到汉字时溢出
Next nByte

我现在只能用错误跳转来将就着用,没办法,水平有限,请高手帮忙了,感谢
两位回答的都很好,现在不溢出了,但又遇到了一个问题再次请教
用ASC得到的是一个问号,用ASCB得到的是乱码,是否转换有问题?

汉字占两个字节,
判断一下是否为汉字
参考下面代码

InputStr = "汉"
If Asc(InputStr) < 0 Then
gbascii = AscB(StrConv(InputStr, vbFromUnicode))
'区位码在16区之后的为汉字
If gbascii - 160 > 15 Then
Print "是汉字"
Else
Print "是全角符号"
End If
Else
Print "是半角英文或数字"
End If

Asc()函数遇到汉字时会返回一个负数,
Byte类型不支持负数,会引发溢出。

建议使用Long类型的数组,
等到需要进行保存等需要Byte的时候再进行类型转换。
比如:

ByteArray(i) = CByte(LngArray(i))