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 & "") 就可以解決了
這裡不能這樣用,我也不知道為啥