二进制阅读器和允许的字符

时间:2015-01-18 14:45:22

标签: vb.net visual-studio

我有问题。

现在程序的工作方式如下:

读取二进制文件字节。 & H1E和& H1F 仅限允许的字符: A123456789

如果在文件中是B或C或D或E或F ....... textbox1 =坏文件

那是有效的。现在我想在& H10中添加验证。 允许的字符仅 26 如果其他字符textbox1 =坏文件

Imports System.IO
Imports System.IO.SeekOrigin
Public Class Form1
    Dim charactersAllowed As String = "A123456789"
    Dim swap As String = "26"

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim OFD As New OpenFileDialog
        Dim fullFile() As Byte
        With OFD
            .Filter = "Binary files (*.bin)|*.bin"
        End With

        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            fullFile = File.ReadAllBytes(OFD.FileName)
            TextBox1.AppendText(fullFile(&H1E).ToString("X2") & " ")
            TextBox1.AppendText(fullFile(&H1F).ToString("X2"))
            TextBox4.AppendText(fullFile(&H10).ToString("X2"))

        End If

 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Dim theText As String = TextBox1.Text
        Dim Letter As String
        Dim SelectionIndex As Integer = TextBox1.SelectionStart
        Dim Change As Integer
        For x As Integer = 0 To TextBox1.Text.Length - 1
            Letter = TextBox1.Text.Substring(x, 1)
            If charactersAllowed.Contains(Letter) = False Then
                theText = theText.Replace(Letter, String.Empty)
                Change = 1
            End If
        Next

        TextBox1.Text = theText
        TextBox1.Select(SelectionIndex - Change, 0)
    End Sub
    Private Sub TextBox4_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextAlignChanged
        Dim check As String = TextBox4.Text
        Dim check2 As String
        Dim check3 As Integer = TextBox4.SelectionStart
        Dim check4 As Integer
        For x As Integer = 0 To TextBox4.Text.Length - 1
            check2 = TextBox4.Text.Substring(x, 1)
            If swap.Contains(check2) = False Then
                check = check.Replace(check2, String.Empty)
                check4 = 1
            End If
        Next
        TextBox1.Text = check
        TextBox1.Select(check3 - check4, 0)
    End Sub

1 个答案:

答案 0 :(得分:1)

难以解码,但显而易见的方法是在字节值错误时阻止编辑:

If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
    fullFile = File.ReadAllBytes(OFD.FileName)
    If fullFile(&H10) <> 26 Then
        TextBox1.Text = "Bad file"
        TextBox1.Enabled = False
        TextBox4.Enabled = False
    Else
        TextBox1.Enabled = True
        TextBox4.Enabled = True
        '' etc...
    End If
End If