type student
     strname as string *6
     number as strint *7
end type我建立了一个随机文件,并且输入了如上自定义类型的数据10条。后来我想通过程序实现查找的功能,可是当我在文本框中输入strname然后进行查找时却无论如何也找不到。我在程序中设置了一些断点后发现,从文件中读出的数据后面带有一些空格,而且这些空格用trim()函数也无法删掉。希望高手能帮助解决,真的非常感谢。
程序如下:
 Dim FindName As String   '要查找人的姓名
 Dim stu As student
 FindName = Txt1.Text
 Open App.Path & "\student.dat" For Random As #1 Len = Len(stu)
 Do While Not EOF(1)
    Get #1, , stu
    If FindName=trim(stu.strname)  Then
       msgbox"找到此人了"
       Exit Do
    End If
 Loop Close #1

解决方案 »

  1.   

    可能是其中的len有问题,因为字符串中有汉字,建议有以下API函数:
    Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long 
    Dim FindName As String   '要查找人的姓名
     Dim stu As student
     FindName = Txt1.Text
     Open App.Path & "\student.dat" For Random As #1 Len = lstrlen(stu)
     Do While Not EOF(1)
        Get #1, , stu
        If FindName=trim(stu.strname)  Then
           msgbox"找到此人了"
           Exit Do
        End If
     Loop Close #1
      

  2.   

    用TRIM也去不掉的空格,一般来说,都是chr(0)可以使用replace(strname,chr(0),"") 来去除。
      

  3.   

    type student
         strname as string *6
         number as strint *7
    end type
    改为:
    type student
         strname as string
         number as strint
    end type
      

  4.   

    没错,那些应该都不是空格。chr(0)差不多。
      

  5.   

    用asc(mid(strname,len(strname)))查看字符ASCII码是什么或者用此,去掉所有和最后一个字符相同的字符
    replace(strname,mid(strname,len(strname)),"") 
      

  6.   

    strname=left(strname,instr(1,strname,chr(0))-1)
      

  7.   

    唉,这样的还不如作个数据库更直接些。费精神不说,效率奇差。
    或者用API函数读写查INI文件更好些
      

  8.   

    有个很简单,但也很笨的方法想不想试一试?你把读取的值先赋给一个标签Label控件,再读取它的Caption属性出来就是不带那些空字符的。