我定义了一个定长的字符串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)谢谢了先!
相关代码如下
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)谢谢了先!
CutZero = IIf(Right(Str, 1) = Chr(0), Left(Str, Len(Str)-1), Str)
End Function
你的ini文件是怎么建立的?为什么会多一个字符?如果用程序写,应该不会有吧?
多的字符不是ini文件的问题。因为getprivateprofilesstring函数中必须定义一个定长的字符串用于将结果写进去。如果定义为 dim strTp as string ,不会得到ini文件的信息。
你可以参照一下
不必这么麻烦
这个办法很聪明
绝对可以解决
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),是我搞错了,不好意思:)
还是谢谢你!多谢各位帮助,结帖。再次感谢!