我在程序中定义了如下自定义类型:
Pubic Type KeyName
      Key(8)  String * 8
End Type
Pubic gKeyName(2) as KeyName
但在使用Trim(gKeyName(0).key(0))时无法消去多余的空格,结果仍然不变,请问是怎么回事?
可能是因为gKeyName(0).key(0)为固定长度的字符串,导致TRIM无效吧?现我是用MID函数来解决的:
str=""
For I=1 to 9
  str1=MID(gKeyName(0).key(0),I,1)
  If str1<>" " Then
      str=str+str1
  End If
Next
另外LTRIM,RTRIM均有此问题。请各高手予以解答,谢谢!

解决方案 »

  1.   

    trim()只能去掉空格(" "),而你的gKeyName(0).key(0)包含的是chr(0),所以去不掉,
    改用以下方法:
    Replace(gKeyName(0).Key(0), Chr(0), "") 
      

  2.   

    不是吧???我怎么运行起来没有任何问题呢?(我在VB6.0、VBA中都测试过)
    我的测试代码如下:
    (添加窗体Form1,命令按钮Command1)Option Explicit
     
    Private Type KeyName
          Key(8) As String * 8
    End Type
    'Public gKeyName(2) As KeyName
    Dim gKeyName(2) As KeyNameSub Test()    Dim s$, i&, j&
        gKeyName(0).Key(0) = "ABCD"
        gKeyName(0).Key(1) = "geese"
        gKeyName(0).Key(2) = "jkjpjk"
        gKeyName(0).Key(3) = "s"
        For j = 0 To 3
            s = Trim$(gKeyName(0).Key(j))
            Form1.Print "Lenth = "; Len(s),
            For i = 1 To Len(s)
                Form1.Print Asc(Mid$(s, i, 1));
            Next
            Form1.Print
        Next
        
    End Sub
    ' 我把上面这段内容放在标准模块中也是相同的结果Private Sub Command1_Click()    Me.Cls
        Call TestEnd Sub
      

  3.   

    谢谢DengXingJie的意见,但单用Replace(gKeyName(0).Key(0), Chr(0), "")还没解决,于是我加上TRIM就解决了:Trim(Replace(gKeyName(0).Key(0), Chr(0), "")),看来里面确实有Chr(0),很可能就在尾部.对于Chen8013的测试,我也做了,确实直接赋值是没问题的,但我的gKeyName(0).key(0)值是从文件中获得的:
    Open App.Path + "\configfile" For Random As #1 Len = LenB(gkeyname(0))
    Get #1, 1, gkeyname(0)
    Get #1, 2, gkeyname(1)
    Get #1, 3, gkeyname(2)
    估计从文件中读取的字符串,和直接赋值的字符串,在gkeyname(0)中的存在形式还是有区别的。虽然我查看了configfile中空白部分是空格&H20.
       另外请教各位高手,在监视窗口有没有办法看到字符串的十六进制内容呢?如果可以的话,非常有利于问题的解决。