type student
     strname as string *6
     number as strint *7
end type我建立了一个随机文件,并且输入了如上自定义类型的数据10条。后来我想通过程序实现查找的功能,可是当我在文本框中输入“张科”然后进行查找时却无论如何也找不到。我在程序中设置了一些断点后发现,从文件中读出的数据后面带有一些空格,而且这些空格用trim()函数也无法删掉。希望高手能帮助解决,真的非常感谢。

解决方案 »

  1.   

    例:
    Option Explicit'文件_顺序文件_函数用法
    Private Sub Form_Click()
        Dim intI As Integer
        Dim lngFileLen As Long, lngLOF As Long
        Dim strA(20) As String
        Open "A:顺序文件" For Input As #1
    '用Input读文件
        Debug.Print "用Input读文件:"
        Do While Not EOF(1)
            intI = intI + 1
            Input #1, strA(intI)
            Debug.Print strA(intI)
        Loop
        Close #1
        Open "A:顺序文件" For Input As #1
    '用Line Input读文件
        Debug.Print "用Line Input读文件:"
        Do While Not EOF(1)
            intI = intI + 1
            Line Input #1, strA(intI)
            Debug.Print strA(intI)
        Loop
        Close #1
    '求打开文件前的字节数
        lngFileLen = FileLen("A:顺序文件")
        Debug.Print "打开文件前的字节数为:"; lngFileLen
        Open "A:顺序文件" For Input As #1
    '求打开文件后的字节数
        lngLOF = LOF(1)
        Debug.Print "打开文件后的字节数为:"; lngLOF
    '用Input函数读文件
        strA(1) = Input(lngLOF, #1)
        Debug.Print "用Input函数读文件:"
        Debug.Print strA(1)
        Close #1
        CurrentX = 1000
        CurrentY = 1000
        FontSize = 20
        Print "程序已运行完毕"
    End Sub
      

  2.   

    实现查找功能:
    在Project-Reference中添加引用Microsoft Scripting Runtime'文件系统对象_文本流搜索
    Option Explicit
    Public vntResult() As VariantFunction STFiles(strPath As String, strSearch As String) As Variant()
        Dim objFSO As New FileSystemObject
        Dim objFil As File
        Dim objTS As TextStream
        Dim lngPos As Long, lngCount As Long
        ReDim vntResult(50)
    '在路径strPath所有文件中查找扩展名为TXT的每一个文件
        For Each objFil In objFSO.GetFolder(strPath).Files
            If UCase(objFSO.GetExtensionName(objFil.Path)) = "TXT" Then
    '如果扩展名为TXT则打开该文件
                Set objTS = objFil.OpenAsTextStream(ForReading)
    '在objTS.ReadAll中从第1个字符起查找字符strSearch最先出现的位置
                lngPos = InStr(1, objTS.ReadAll, strSearch, vbTextCompare)
    '关闭此文件
                objTS.Close
    '如果找到所要搜索的字符串
                If lngPos > 0 Then
    '重新打开该文件
                    Set objTS = objFil.OpenAsTextStream(ForReading)
    '将指针移到所要搜索的字符最先出现的位置
                    objTS.Skip lngPos - 1
    '文件计数器加1
                    lngCount = lngCount + 1
    '如果文件计数器超过vntResult的上界
                    If lngCount > UBound(vntResult) Then
                        ReDim Preserve vntResult(UBound(vntResult) + 50)
                    End If
    '利用Array函数为vntResult变体数组赋值
                    vntResult(lngCount) = Array(objFil.Path, objTS.Line, objTS.Column)
    '关闭该文件
                    objTS.Close
                End If
            End If
        Next
        ReDim Preserve vntResult(lngCount)
        STFiles = vntResult
    End Function'文件系统对象_文本流搜索
    'Option ExplicitPrivate Sub Form_Click()
        Dim vntP() As Variant
        Dim intI As Integer
    '在F盘的所有TXT文件中搜索第一个“星期”所出现的位置
        vntP() = STFiles("F:", "星期")
    '将出现位置放入列表框
        For intI = 1 To UBound(vntP)
            List1.AddItem "路径为" & vntP(intI)(0) & _
                "  在第" & vntP(intI)(1) & "行和第" & _
                vntP(intI)(2) & "列"
        Next
    End Sub
      

  3.   

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