首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环遍历整个文件,同时打印每个实例的输出。

循环遍历整个文件,同时打印每个实例的输出。
EN

Stack Overflow用户
提问于 2014-10-23 06:38:20
回答 1查看 41关注 0票数 0
  1. 标题很大程度上涵盖了它,我正在搜索一个数组,并希望为找到的每个实例打印输出。我的当前代码找到指定的值并返回它的位置,但是在找到第一个实例之后停止,我想要它们全部。
  2. 此外,是否有一种方法来使用文本框作为我的搜索值?或者,如果我使用文本框,它是否总是以字符串的形式进行搜索?Bc那就不行了:
  3. 输出现在转到一个txtbox。这是长时间输出的最佳选择吗?我知道,比最初的问题更多。但是第一条是最重要的。任何帮助都是受欢迎和感激的。

我目前的代码=

代码语言:javascript
复制
 Private Function findOffset()
    Using reader As New BinaryReader(File.Open("FilePath", FileMode.Open, FileAccess.Read))
        Dim pos As Integer = 0
        Dim length As Integer = reader.BaseStream.Length
        Do While pos < length
            Dim value As Byte = reader.ReadByte()
            If value = CByte(&H13) Then
                Return pos
                Exit Do
            End If
            pos += 1
        Loop

    End Using
End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    TextBox1.Text = (Hex(findOffset()).ToString.PadLeft(6, "0"c))

End Sub

做好今晚的准备,但早上第一件事就回来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 08:06:36

你的第一个问题在于:

代码语言:javascript
复制
If value = CByte(&H13) Then
  Return pos
  Exit Do
End If

如果找到第一个实例,则退出函数并丢弃BinaryReader。如果再次调用函数,则在0位置创建一个新读取器。

尝试将代码更改为:

代码语言:javascript
复制
Dim positions As New List(Of Integer)()

[...]

If value = CByte(&H13) Then
  positions.Add(pos)
End If

这样你就能得到所有发生的事情。

要显示您发现的所有值,您必须将它们连接到一个String中。

代码语言:javascript
复制
TextBox1.Text = String.Join("|", findOffset())

如果要以某种方式转换整数值,可以在findOffset()上循环或使用LINQ的Select方法:

代码语言:javascript
复制
findOffset().Select(Function(i) Hex(i).ToString.PadLeft(6, "0"c))

对于第二个问题:只需将TextBox的转换文本属性作为函数参数传递给findOffSet方法即可。

代码语言:javascript
复制
Private Function findOffset(ByVal search as Byte)
  [...]
  If value = search Then
  [...]
End Function

就这样叫它:

代码语言:javascript
复制
findOffset(Convert.ToByte(Convert.ToInt16(mySearchTextBox.Text)))

您必须事先检查有效的文本输入,否则将在这一行得到异常。

为了回答您的第三个问题:我认为对于少量的结果来说,TextBox是可以的,但是如果您的搜索结果有点复杂,您应该考虑使用ListBox,如果您的搜索结果有点复杂的话,您应该考虑使用DataGridView (据我所知,在这种特殊情况下)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26522512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档