【发布时间】:2021-07-19 21:17:41
【问题描述】:
我开始在 Visual Studio 2019 中使用 VB.NET 进行编码。我遇到了一个我不明白的奇怪问题。 我的程序很简单,目前打算运行一个非常大的 .txt 文件(近 300 万行),找到某个字符串值(这些值由“,”分隔 - 它是逗号分隔值)并让我知道是否已找到字符串值,如果已找到,则为行号。如果没有,我只想放置一个标签来显示“找不到文件”。该程序有效,如果我键入相应的值或“找不到文件”,我确实会得到“在(行号)上找到的文件”,但是在程序完成并运行之后,我得到一个参数空异常,说“值不能为 Null,参数名称:Source”。我不确定它反对什么。可能是因为如果找不到字符串值,我创建了一个布尔值“False”,但我搜索了整个 Microsoft 文档,但找不到任何暗示不允许这样做的内容。
这是我的代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim File_name As String
File_name = "C:\New Folder\Programming\Residual Stressn.txt"
Dim entr As String
entr = TextBox1.Text
Dim Txter As New FileIO.TextFieldParser(File_name)
Txter.TextFieldType = FileIO.FieldType.Delimited
Txter.SetDelimiters(",")
While Not Txter.EndOfData
Txter.ReadFields()
If Txter.ReadFields.Contains(entr) = True Then Label1.Text = "File Found on line " & Txter.LineNumber
If Txter.ReadFields.Contains(entr) = False Then Label2.Text = "File Not found"
End While
MsgBox("Enter next command")
End Sub
正如我所说,程序运行,两个标签都有效。它只是在完成后启动了 boobsy-die。 该参数,如果它引用“entr”,则不为空。在运行时,我总是在文本框中输入一个字符串值。在我添加 label2 和“false”值之前,它并没有让我生气。但如果允许我输入一个布尔值,我可以使用 readfields.contains 输入,那么我应该可以输入“false”吗?谁能帮帮我?
【问题讨论】:
-
用
try...catch块包围代码以获取有关异常的更多详细信息。您也可以在这里找到示例代码 - docs.microsoft.com/en-us/dotnet/visual-basic/developing-apps/… -
您的
While循环在找到某些内容后永远不会结束 - 即使在找到某些内容后它也会继续并不断更新 Label1 或 Label2 直到文件结束。
标签: vb.net