我想从注册表中读取一个字符串值,并将其与另一个特定的字符串连接起来.我正在调用RegQueryValueEx(),如下所示:
Dim lResult As Long Dim sLength As Long Dim sString As String sString = Space$(256) sLength = 256 lResult = RegQueryValueEx(hKey, "MyKey", 0, REG_SZ, ByVal sString, sLength) MsgBox sString & "blah-blah-blah"
RegQueryValueEx()工作正常,我在sString中获取所需的字符串,甚至可以使用MsgBox显示它.但是当我尝试用"some_string"连接它时,我只得到了sString.Plz,帮帮我.
谢谢
字符串中可能存在空字符,因为VB字符串将字符串的长度存储在字符串内容之前的内存中.在你的情况下,长度为256.当你使用RegQueryValueEx加载内容时,它会终止字符串(C风格),但不会更改其指定的长度,因此在VB世界中它仍然是256个字符长.然后,当您追加第二个字符串时,它会在前256个字符后附加,但MsgBox仅显示最多为null字符的内容.
因为RegQueryValueEx将实际数据的长度放在sLength中,所以可以在MsgBox之前添加此行
sString = Left$(sString, sLength)