如何读取txt文件中的特定行vb 6
我想读取vb 6.0程序中.txt文件中的特定行。我最感兴趣的是特定文本出现的地方。我正尝试应用我从另一个项目获得的代码。如何读取txt文件中的特定行vb 6
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
我只是增加了一个功能,从字符串中读取一行,并且您可以继续使用LOF功能,也可以使用原始代码中的所有概念。
首先,如果你搜索了你的错误,你会发现原因,https://msdn.microsoft.com/en-us/library/aa232640(v=vs.60).aspx。
其次,您需要做一些事情来确保文件中有任何内容可以读取。 https://msdn.microsoft.com/en-us/library/aa262732(v=vs.60).aspx
最后,使用循环来读取文件中的行。看起来你希望第一行显示在一个标签中,第二行显示在另一个标签中。下面的代码从文件中一次读取一行,确定它是读取奇数行号(第一行)还是偶数行号(第二行),并在标签中显示该行。读完每行后,它会查找“某个文本”,如果发现它会退出循环并关闭该文件。
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
请注意,在调用InStr之前,我没有检查strLine是否包含任何内容。如果它是空的,InStr函数将导致错误。你应该添加一些防御性编码。至少是一个错误处理程序。
”首先,如果你搜索了你的错误,你会找到原因。“显然,如果确实发现,OP没有发现或理解“原因”。可能不是一个好的形式来开始与谴责的答案。 – Jazimov
您的代码显示2行。如果文件少于两行,那么你当然会“超过文件末尾”。如果你的文件没有被编码为带有CR或CRLF的ANSI作为可能会导致问题的行分隔符。在这种情况下,你必须做更复杂的事情。 “ – Bob77