热情软件屋

 

如何按行分割字符串


编号:QA001860
建立日期: 1999年10月14日 最后修改日期:1999年10月14日
所属类别:

509:
    我用VB5读取一个文本文件,由于需逐行读取再分析计算。可是这种读入文件速度对大文件时特别慢。能否把所有文件信息全部读入缓冲区,再处理。可是又如何保证每行每行地分析数据呢。

回答:

    先使用Get语句将文件读到一个字符串中,然后,使用Split函数进行逐行的分解。之所以使用Get语句,而不使用Input函数,请参考QA000051 "VB 5提示错误:"输入超出文件尾""。下面是一个示例。
    Private Sub Command1_Click()
     Dim s As String
     s = String(FileLen("c:\a.txt"), " ")
     Open "c:\a.txt" For Binary As 1
     Get #1, , s
     Close 1
     v = Split(s, vbCrLf)
     Dim i
     For i = 0 To UBound(v)
     List1.AddItem v(i)
     Next
    End Sub
    
     Public Function Split(ByVal sIn As String, Optional sDelim As _
     String, Optional nLimit As Long = -1, Optional bCompare As _
     VbCompareMethod = vbBinaryCompare) As Variant
     Dim sRead As String, sOut() As String, nC As Integer
     If sDelim = "" Then
     Split = sIn
     End If
     sRead = ReadUntil(sIn, sDelim, bCompare)
     Do
     ReDim Preserve sOut(nC)
     sOut(nC) = sRead
     nC = nC + 1
     If nLimit <> -1 And nC >= nLimit Then Exit Do
     sRead = ReadUntil(sIn, sDelim)
     Loop While InStr(1, sIn, sDelim, bCompare) > 0
     ReDim Preserve sOut(nC)
     sOut(nC) = sIn
     Split = sOut
     End Function
    
    
     Public Function ReadUntil(ByRef sIn As String, _
     sDelim As String, Optional bCompare As VbCompareMethod _
     = vbBinaryCompare) As String
     Dim nPos As String
     nPos = InStr(1, sIn, sDelim, bCompare)
     If nPos > 0 Then
     ReadUntil = Left(sIn, nPos - 1)
     sIn = Mid(sIn, nPos + Len(sDelim))
     End If
     End Function

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio