我定义了一个定长的字符串strTp,用getprivateprofilestring函数读取一个ini文件的某个项目,最后想把其中有效字符复制到另外的变量中strA中,但是用trim函数不能去掉strTp最后一个asc为0的字符,不知VB有没有其它函数有这个功能。
相关代码如下
dim strTp *20
dim strA as string
intRt(I) = GetPrivateProfileString(Str(I), strV(J), lpDefault, strTp, Len(strTp), iniFileName)                    
strA= Trim(strTp)如strTp内容为"ABCD                "
则strA内容为"ABC "
总是多一个字符。虽然可以对strA再进行处理,我还是想知道有没有现成的函数能只读取strTp的有效内容(ABC)谢谢了先!

解决方案 »

  1.   

    Function CutZero(Str as String) As String
       CutZero = IIf(Right(Str, 1) = Chr(0), Left(Str, Len(Str)-1), Str)
    End Function
      

  2.   

    抱歉,补充一下,有时候会多出许多的chr(0),数目不确定(视有效内容长度而定)。
      

  3.   

    好象只能如楼上所说方法解决
    你的ini文件是怎么建立的?为什么会多一个字符?如果用程序写,应该不会有吧?
      

  4.   

    ini文件是用记事本做的。
    多的字符不是ini文件的问题。因为getprivateprofilesstring函数中必须定义一个定长的字符串用于将结果写进去。如果定义为 dim strTp as string ,不会得到ini文件的信息。
      

  5.   

    strTp = replace(strTp,chr(0),"")
      

  6.   

    VB中有专门针对INI文件的API
    你可以参照一下
    不必这么麻烦
      

  7.   

    strTp = replace(strTp,chr(0),"")
    这个办法很聪明
    绝对可以解决
      

  8.   

    我把Oasis0535(绿洲) 的函数改了一下,也能实现
    Function CutZero(Str As String) As String
    Dim I As Integer
    Dim ch As String * 1
    Dim intL As Integer
    intL = Len(Str)
    For I = 1 To intL
        ch = Asc(Mid(Str, I, 1))
        If ch = 0 Then
            CutZero = Mid(Str, 1, I - 1)
        End If
    Next I
    End Function
    但还是wxy_xiaoyu(☆然也☆╭∩╮(︶︿︶)╭∩╮)  (这么长的名字,老天)的方法更简单。我发现无论的字符串strTp定义为多长,最后一个字符总是chr(0)。
    可能这就是问题所在。
    前面说出现多个chr(0),是我搞错了,不好意思:)
      

  9.   

    to twinking():我用的就是读ini的API函数啊。
    还是谢谢你!多谢各位帮助,结帖。再次感谢!
      

  10.   

    strA=left(strtp,(instr(strtp,chr(0))-1))