仁者见仁,智者见智!各位老大,果然厉害!不过我觉得问题倒是越辩越明了! 哦!不好意思,我又看了一下我举的例子,中间有个大错误,正确的应是(byt数组不是string型,而是byte型): sub form_load() dim str as string dim byt() as byte
str="是个问题abcde" byt=str end sub 在end sub处设置断点,运行到此处时添加watch:byt,看看byt里存了什么大家就明白了! 这个问题还跟vb的sp有关系?我不知道。我只知道上面的例子在vb6和在vb3上运行,结果不同。 在vb3上是中文两个字节,E文一个字节! 在vb6上是什么样子,各位老大可以看一看! 真不好意思,向各位老大致谦!(cloudred痛哭流涕的请求各位老大的原谅......)
在VB中一个字符到底占一个还是两个字节可自己计算lenB()和len()的结果都是不对的这是我写的一个函数可计算任意字符串的长度 Private Function LenString(aString As String) As Long Dim aStr As String Dim bStr As String Dim i As Integer Dim j As Integer aStr = aString
For i = 0 To Len(aStr) - 1 bStr = Mid(aStr, i + 1, 1) If (Asc(bStr) < 0) Then j = j + 2 Else j = j + 1 End If Next i LenString = j End Function
即使在运行的时候也只会出现“不能给数组赋值”的错误。
但是至于长度好象不是那么简单:用lenB()似乎是每个字符为两个字节的长度,而len()则为一个。
哦!不好意思,我又看了一下我举的例子,中间有个大错误,正确的应是(byt数组不是string型,而是byte型): sub form_load()
dim str as string
dim byt() as byte
str="是个问题abcde"
byt=str
end sub
在end sub处设置断点,运行到此处时添加watch:byt,看看byt里存了什么大家就明白了! 这个问题还跟vb的sp有关系?我不知道。我只知道上面的例子在vb6和在vb3上运行,结果不同。
在vb3上是中文两个字节,E文一个字节!
在vb6上是什么样子,各位老大可以看一看!
真不好意思,向各位老大致谦!(cloudred痛哭流涕的请求各位老大的原谅......)
Private Function LenString(aString As String) As Long
Dim aStr As String
Dim bStr As String
Dim i As Integer
Dim j As Integer
aStr = aString
For i = 0 To Len(aStr) - 1
bStr = Mid(aStr, i + 1, 1)
If (Asc(bStr) < 0) Then
j = j + 2
Else
j = j + 1
End If
Next i
LenString = j
End Function