如何在VB6中读取txt文件中的特定行

如何在VB6中读取txt文件中的特定行,vb6,Vb6,我想在VB6.0程序中读取.txt文件中的特定行。我的兴趣是某一行出现某一文本的地方。我正在尝试应用我从另一个项目中获得的代码 Dim strLine As String Open "E:\Projects\VB\Ubunifu\MyList.txt" For Input As #1 Line Input #1, strLine ' read one line at a time vs entire file lblCurrent.Caption = strLine Line Input #1,

我想在VB6.0程序中读取.txt文件中的特定行。我的兴趣是某一行出现某一文本的地方。我正在尝试应用我从另一个项目中获得的代码

Dim strLine As String
Open "E:\Projects\VB\Ubunifu\MyList.txt" For Input As #1
Line Input #1, strLine ' read one line at a time vs entire file
lblCurrent.Caption = strLine
Line Input #1, strLine
lblO.Caption = strLine
Close #1
但是,这似乎不起作用,它显示“输入超过文件结尾”

您可以尝试以下方法:

 Private Sub Form_Load()
       Text1.MultiLine = True
       Open "E:\Projects\VB\Ubunifu\MyList.txt" For Input As #1
       Text1.Text = Input$(LOF(1), #1)

       lblCurrent.Caption = udf_ReadLine(Text1.Text, 1)   ' read line #1
       lblCurrent_i.Caption = udf_ReadLine(Text1.Text, 2)   ' read line #2

       Close #1
    End Sub

    Private Function udf_ReadLine(ByVal sDataText As String, ByVal nLineNum As Long) As String
        Dim sText As String, nI As Long, nJ As Long, sTemp As String

        On Error GoTo ErrHandler

        sText = ""
        nI = 1
        nJ = 1
        sTemp = ""
        While (nI <= Len(sDataText))
            Select Case Mid(sDataText, nI, 1)
                Case vbCr
                    If (nJ = nLineNum) Then
                        sText = sTemp
                    End If
                Case vbLf
                    nJ = nJ + 1
                    sTemp = ""
                Case Else
                    sTemp = sTemp & Mid(sDataText, nI, 1)
            End Select
            nI = nI + 1
        Wend
        If (nJ = nLineNum) Then
            sText = sTemp
        End If
        udf_ReadLine = sText

        Exit Function

    ErrHandler:
        udf_ReadLine = ""
    End Function
Private子表单_Load()
Text1.MultiLine=True
打开“E:\Projects\VB\Ubunifu\MyList.txt”作为#1输入
Text 1.Text=输入$(LOF(1),#1)
lblCurrent.Caption=udf_ReadLine(Text1.Text,1)'ReadLine#1
lblCurrent_i.Caption=udf_ReadLine(Text1.Text,2)“ReadLine”2
关闭#1
端接头
私有函数udf_ReadLine(ByVal sDataText作为字符串,ByVal nLineNum作为长字符串)作为字符串
Dim sText作为字符串,nI作为长字符串,nJ作为长字符串,sTemp作为字符串
关于错误转到错误处理程序
sText=“”
nI=1
nJ=1
sTemp=“”

而(nI首先,如果您搜索了错误,您会找到原因

其次,您需要做一些事情来确保文件中有任何内容可读取

最后,使用循环从文件中读取行。看起来您希望第一行显示在一个标签中,第二行显示在另一个标签中。下面的代码从文件中一次读取一行,决定它是读取奇数行号(第一行)还是偶数行号(第二行)并在标签中显示该行。读取每行后,它会查找“某个文本”,无论该文本是什么,如果找到,它将退出循环并关闭文件

Open "E:\Projects\VB\Ubunifu\MyList.txt" For Input As #1
Do While EOF(1) = False
    Line Input #1, strLine ' read one line at a time vs entire file
    lngLineNum = lngLineNum + 1 'Am I reading an odd or even line number
    If lngLineNum Mod 2 <> 0 Then
        lblCurrent.Caption = strLine
    Else
        lblO.Caption = strLine
    End If
    If InStr(1, strLine, "a cetain text", vbTextCompare) > 0 Then
        Exit Do
    End If
Loop
Close #1
打开“E:\Projects\VB\Ubunifu\MyList.txt”作为#1输入
当EOF(1)=False时执行
行输入#1,strLine“一次读取一行而不是整个文件”
lngLineNum=lngLineNum+1'我读取的是奇数还是偶数
如果lngLineNum Mod 2 0,则
lblCurrent.Caption=strLine
其他的
lblO.Caption=strLine
如果结束
如果InStr(1,strLine,“a cetain text”,vbTextCompare)>0,则
退出Do
如果结束
环
关闭#1

请注意,在调用InStr之前,我没有检查strLine是否包含任何内容。如果它为空,InStr函数将导致错误。您应该添加一些防御性编码。至少应该添加一个错误处理程序。

您的代码读取两行。如果文件少于两行,那么您当然会“超过文件末尾”如果您的文件未编码为ANSI,使用CR或CRLF作为行分隔符,也可能会导致问题。在这种情况下,您必须执行更复杂的操作。“首先,如果您搜索了错误,您会找到原因。”显然,OP没有找到或理解“原因”,如果真的被发现了。用责备开始回答可能不是一个好的形式。