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"的值?

解决方案 »

  1.   

    用Trim只能除去空格
    sValue的值中包含的应该不是空格应该是chr(0)
    具体的我没测试
    你用replace(sValue,chr(0),"")试试
      

  2.   

    DengXingJie(杰西) 说的是对的,
    从注册表中取得的字符串,结尾都有'\0'的,'\0'在vb中即是Chr(0).
      

  3.   

    Private Sub getUFOPath()
            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去除空格,因为我们不知道注册表中的内容是否含有空格
      

  4.   

    "主要就是表达一个意思,不要用trim去除空格,因为我们不知道注册表中的内容是否含有空格"//汗好象我一直没考虑到这个问题.........
      

  5.   

    我一般都是 Replace(str,vbNullChar,vbNullString)
      

  6.   

    问题还是没有解决,本来路径是d:\UFSMART,但一用楼主们的方法,乱码是没有了
    但本径变成了d:\UFSMARTMART,为什么后面会多出一个MART还有就是如果不用楼主们的方法,直接用msgBox nValue也没有问题,但就是不能直接在后面加字符串盼解答!!谢谢
      

  7.   

    Left$(sValue, nLength - 1)试试这个吧。睡觉去。