strTemp = String(100, Chr$(0))
    GetTempPath 100, strTemp
    strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)其中,GetTempPath的声明是这样的:
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
    (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long谢谢,谁来给俺解释下可以么

解决方案 »

  1.   

    GetTempPath函数获得windows临时文件目录,返回的目录名是以Chr$(0)结尾的,所以需要调用Left$将目录名的实际部分读出来。
      

  2.   

    Chr$(0)是啥意思呢
    我查msdn,chr的定义是这样的呀:Chr(charcode)
    怎么后面又有个$符号,括号里面的0又是啥意思呀sorry,看似简单,不过我还真是不明白
      

  3.   

    chr$根chr是一样的,里面的0是文件目录名字符串的结束符。
      

  4.   

    Chr$(0)是GetTempPath函数取得windows临时文件目录字符串的最后一个字符,用
    Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)获得Chr$(0)前面的字符,这才是真正
    的windows临时文件目录字符串!
      

  5.   

    嗯,基本上明白
    只是这个还不是特别清楚,Chr$(0)是啥字符呢,可以用别的表示么,比如Chr$(5),或者用Chr(0)表示可以么谢谢哦,想多了解一点
      

  6.   

    strTemp = String(100, Chr$(0))
    chr(ascii码),即把一个ascii码转换成字符,chr(0)也可以写成vbNullChar
    这一句就把strTemp填充成一个由100个vbNullChar组成的缓冲区,用来接收GetTempPath返回的字符串
    GetTempPath 100, strTemp
    将GetTempPath返回的串放进strTemp中,100是返回串的长度
    strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)
    如果返回的串的长度小于100,所以strTemp后面还有若干的vbNullChar,所以需要用InStr找到第一个vbNullChar的位置,然后用Left取它从左到右的第一个字符起到找到的第一个vbNullChar的位置-1的位置的内容,也就是系统临时文件夹的路径这样可清楚?
      

  7.   


    C语言格式的字符串都是以 Chr(0) 作为结束标志(Windows显然遵循了C语言约定)而VB字符串不是以Chr(0)作为结束的。
      

  8.   

    完全清楚我再罗嗦一下哈:我试了一下:    strTemp = String(109, "*")
        MsgBox strTemp
        GetTempPath 109, strTemp
        MsgBox strTemp我认为后面一个msgbox出来的结果应该是临时文件夹的路径加上一些*号,可是,测试结果发现那些*号被自动去掉了,如果这样那我开始问的那个问题,不是不需要这一句了:strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)
      

  9.   

    不是。MsgBox内部使用了WindowsAPI,字符串还按C语言格式,以Chr(0)结尾。所以看上去正确。实际必须处理一下。