Private Sub getUFOPath()
Dim nKeyHandle As Long, nValueType As Long, nLength As Long
Dim sValue As String
Dim nRet As Long
sValue = Space(255)
nLength = 255
nRet = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\2.0\Install\CurrentInst\", nKeyHandle)
If nRet <> ERROR_SUCCESS Then
Call RegCloseKey(hKey)
GoTo errhandle:
End If
nRet = RegQueryValueEx(nKeyHandle, "CONFIGFILE", 0, REG_SZ, sValue, nLength)
If nRet <> ERROR_SUCCESS Then
Call RegCloseKey(hKey)
GoTo errhandle:
End If
MsgBox Trim(sValue) + "aaaaa"
Call RegCloseKey(hKey)
Exit Sub
errhandle:
MsgBox Err.Description
End Sub
上面的程序能够得到sValue的值,而且正确但nLength的值是255,导致sValue的长度也是255,所以Trim(sValue)+"aaaa"的值还是sValue的值,怎么修改才能加上"aaaa"的值?
Dim nKeyHandle As Long, nValueType As Long, nLength As Long
Dim sValue As String
Dim nRet As Long
sValue = Space(255)
nLength = 255
nRet = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\2.0\Install\CurrentInst\", nKeyHandle)
If nRet <> ERROR_SUCCESS Then
Call RegCloseKey(hKey)
GoTo errhandle:
End If
nRet = RegQueryValueEx(nKeyHandle, "CONFIGFILE", 0, REG_SZ, sValue, nLength)
If nRet <> ERROR_SUCCESS Then
Call RegCloseKey(hKey)
GoTo errhandle:
End If
MsgBox Trim(sValue) + "aaaaa"
Call RegCloseKey(hKey)
Exit Sub
errhandle:
MsgBox Err.Description
End Sub
上面的程序能够得到sValue的值,而且正确但nLength的值是255,导致sValue的长度也是255,所以Trim(sValue)+"aaaa"的值还是sValue的值,怎么修改才能加上"aaaa"的值?
sValue的值中包含的应该不是空格应该是chr(0)
具体的我没测试
你用replace(sValue,chr(0),"")试试
从注册表中取得的字符串,结尾都有'\0'的,'\0'在vb中即是Chr(0).
Dim nKeyHandle As Long, nValueType As Long, nLength As Long
Dim sValue As String*255
Dim nRet As Long
nLength = 255
nRet = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\2.0\Install\CurrentInst\", nKeyHandle)
If nRet <> ERROR_SUCCESS Then
Call RegCloseKey(hKey)
GoTo errhandle:
End If
nRet = RegQueryValueEx(nKeyHandle, "CONFIGFILE", 0, REG_SZ, sValue, nLength)
If nRet <> ERROR_SUCCESS Then
Call RegCloseKey(hKey)
GoTo errhandle:
End If
dim s as string
s=left(sValue,instr(1,sValue,chr(0))-1)
msgbox s + "aaaaa"
Call RegCloseKey(hKey)
Exit Sub
errhandle:
MsgBox Err.Description
End Sub
代码没经过测试,可能有问题,主要就是表达一个意思,不要用trim去除空格,因为我们不知道注册表中的内容是否含有空格
但本径变成了d:\UFSMARTMART,为什么后面会多出一个MART还有就是如果不用楼主们的方法,直接用msgBox nValue也没有问题,但就是不能直接在后面加字符串盼解答!!谢谢