API函数定义好:
RegQueryValueEx(hKey, "path", 0, nValueType, sValue, nLength)获取注册表的一个健值sValue,为什么sValue要先赋空格,请问一下不先赋空格可以吗?

解决方案 »

  1.   

    不可以,那是先为sValue分配空间
      

  2.   

    svalue是作为参数接受的数据,但是,如果要改变的数据比原来的字符串长,则API函数修改的只是字符串结束之前的部分。所以,我们可以把字符串变量定义的足够大,使得API函数绝对不会写出字符串结尾之外来解决。一般来说,可以定义为如下格式:
    dim str as string *256 或者  dim str as string :str=string(256,chr(0))
      

  3.   

    一般来说,应该取大一点,函数返回后,取回的字符串保存在返回参数中,而有效的字符可能只有几个或十几个,应当在调用后截掉不必要的字符,例如在你的例子中,可以用如下的形式得到正确的返回值:
    dim str as string*256
    RegQueryValueEx hKey, Name, 0, typedata, ByVal Str, Len(Str)
    If typedata = reg_sz Then
    Str = Left(Str, InStr(Str, Chr(0)) - 1)
    End If