Form1 的 Command1 后面
原本
复制程式
MsgBox SPPBuff1 & SPPBuff2
改成
复制程式
MsgBox KillNull(SPPBuff1) & KillNull(SPPBuff2)
并且在 Form1 程式码区或其他 Module 区加上一个函数:
复制程式
Public Function KillNull(ByVal S As String) As String '只杀右边的 ChrW(0)
Dim m As Long
m = InStr(1, S, vbNullChar)
KillNull = Left(S, m - 1)
End Function
--------------------------
由于 SPPBuff1 与 SPPBuff2 是从 GetPrivateProfileString 的 API 读取来的
而读取回来的字串长度都是 255
可是前面不是才几个字而已吗? 那么后面那一大串又是什么东西
用 Trim() 没用,因为后面填满的是 Null 字元
我自己也搞不太懂 NULL 的用法
这边有写到关于 Null, Nothing, 空字串, Empty 的区别,可以看一下
http://www.chinavb.net/...p?id=1714你可以加一个 Msgbox AscW(Mid(SPPBuff1,200,1)) 叫程式显示出 SPPBuff1 第 200 个位置的字元的 ASCII
结果会是 0
而 ChrW(0) 即是 NULL,正确来说是 VbNullChar
而 VbNullChar 与 VbNullString 好像又不太一样,这我也搞不清楚
这里我是用 KillNull 把原本长度 255 的字串后面的 Null 全部砍掉
而侦测时就要用 VbNullChar 而不能用 VbNullString
使用资料库读取也会用到这个,看说明是用 Trim(Str & "") 就可以解决了
这里不能这样用,我也不知道为啥