vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
HEX Editor Eigenbau (Teil1) 
Autor: Manfred X
Datum: 11.06.11 21:36

Hallo!

Für solche Zwecke verwendet man ein Datagridview-Control.
Hier der erste Teil des Codes.
Wenn Du Controls im Designer hinzufügen willst, mußt Du
die entsprechende Dim-Anweisung aus dem Code entfernen
und das Control im Designer einrichten.
Beachte, dass es sich hier um eine FESTE Feldgröße handelt.
Zellenzahl und Zellengröße müssen zu den Abmessungen passen.
RESIZE, SCROLLBARS etc. sind ungeeignet.
Public Class frmHex2
    Const gridlines As Integer = 20
    Const rowcolumns As Integer = 16
    Dim inputlength As Integer = gridlines * rowcolumns
    Dim filelength, topposition As Long
    Const ShowHex As Boolean = True
 
    Dim fsin As IO.FileStream, br As IO.BinaryReader, bw As IO.BinaryWriter
    Dim WithEvents dgv As New DataGridView With {.Parent = Me, .Dock = _
      DockStyle.Fill}
 
    Private Sub frmHex_FormClosing(sender As Object, _
        e As FormClosingEventArgs) Handles Me.FormClosing
        br.Close() : bw.Close() : fsin.Close()
    End Sub
 
    Private Sub frmHex_Load(sender As System.Object, e As EventArgs) Handles _
      MyBase.Load
        'Formular einrichten
        Me.Width = 740 : Me.Height = 470
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
 
        'Datei laden
        Dim infile As String = "F:\Daten\bytes.bin"
        fsin = New IO.FileStream(infile, IO.FileMode.Open, _
          IO.FileAccess.ReadWrite)
        filelength = fsin.Length
        br = New IO.BinaryReader(fsin)
        bw = New IO.BinaryWriter(fsin)
 
        'Datagridview einrichten
        With dgv
            For i As Integer = 0 To rowcolumns - 1
                .Columns.Add("SP" & CStr(i), "SP" & CStr(i))
                .Columns(i).Width = 30
                .Columns(i).DefaultCellStyle.Alignment = _
                    DataGridViewContentAlignment.BottomRight
                If i = rowcolumns \ 2 Then
                    .Columns(i).Width = 70
                Else
                    .Columns(i).Width = 40
                End If
            Next i
            .Font = New Font("Arial", 10)
            .Rows.Add(gridlines)
            .ColumnHeadersVisible = False
            .AllowUserToAddRows = False : .AllowUserToDeleteRows = False
            .AllowUserToResizeColumns = False : .AllowUserToOrderColumns = False
            .AllowUserToResizeRows = False : .RowHeadersVisible = False
            .MultiSelect = False
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .CellBorderStyle = DataGridViewCellBorderStyle.None
        End With
 
        'Anzeige aktualisieren
        topposition = 0 : Showbytes(0)
        dgv.Focus()
    End Sub
 
    Private Sub Showbytes(ByVal RowSelected As Integer)
        fsin.Position = topposition
        Dim byt As Byte() = br.ReadBytes(inputlength)
        Dim r, c As Integer
        dgv.SuspendLayout()
        r = 0 : c = -1
        For i As Integer = 0 To byt.Length - 1
            c += 1 : If c = rowcolumns Then r += 1 : c = 0
            If Not ShowHex Then
                dgv.Rows(r).Cells(c).Value = CStr(byt(i))
            Else
                dgv.Rows(r).Cells(c).Value = Hex(byt(i))
            End If
        Next i
        For i As Integer = byt.Length To inputlength - 1
            c += 1 : If c = rowcolumns Then r += 1 : c = 0
            dgv.Rows(r).Cells(c).Value = String.Empty
        Next i
        dgv.ResumeLayout()
        dgv.Rows(RowSelected).Selected = True
    End Sub
 
    Private Sub dgv_CellEndEdit(sender As Object, _
        e As System.Windows.Forms.DataGridViewCellEventArgs) _
        Handles dgv.CellEndEdit
 
        Dim c As DataGridViewCell = dgv.CurrentCell
        Try
            Dim byt As Byte
            If ShowHex Then
                byt = CByte(Convert.ToInt32(c.Value.ToString, 16))
            Else
                byt = CByte(c.Value)
            End If
            Dim fileposition As Long = topposition + e.RowIndex * rowcolumns + _
              e.ColumnIndex
            If fileposition < filelength Then
                fsin.Position = fileposition : bw.Write(byt)
            Else
                dgv.CurrentCell.Value = String.Empty
            End If
        Catch
        Finally
            Dim ex As New KeyEventArgs(Keys.Down)
            Showbytes(e.RowIndex)
            dgv_KeyDown(dgv, ex)
        End Try
    End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
HEX Editor Eigenbau -> Anzeigen anders formatieren5.355Seek110.03.10 12:07
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren4.224Brian10.03.10 12:41
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.532ModeratorFZelle10.03.10 13:52
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.601Seek110.03.10 14:49
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.451GPM10.03.10 15:19
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.428Seek110.03.10 15:31
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.446GPM10.03.10 15:41
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.411Seek110.03.10 15:50
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.025einet10.06.11 15:02
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren2.949ModeratorFZelle10.06.11 21:24
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren2.968einet11.06.11 00:03
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.191ModeratorDaveS11.06.11 08:31
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.127Manfred X11.06.11 09:39
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.018Manfred X11.06.11 09:44
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren2.916einet11.06.11 19:00
HEX Editor Eigenbau (Teil1)3.270Manfred X11.06.11 21:36
Re: HEX Editor Eigenbau (Teil2)3.069Manfred X11.06.11 21:37
Re: HEX Editor Eigenbau -> Anzeigen anders formatieren3.005ModeratorDaveS11.06.11 22:07

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel