Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Will eine Datei so einlesen wei sie ein Hexeditor anzeigt

Teflon / 3 Antworten / Flachansicht Nickles

Hi leute
ich versuch grad ein VBAproggi zu schreiben mit dem man ein par Werte in aus einem Savegame einlesen kann, um diese dann zu verändern.
das prob is das ich den inhalt der datei so brauche wie sie in einem Hexeditor angezeigt wird, nicht unbedingt mit abstand und fixer Zeilenlänge(des krieg ich nacher bei der anzeige schon hin) mir gehts vorerst nur darum die datenaus zulesen
ich hab dazu auch schon nen code der des kann, find den aber total umständlich, gibts da nicht was einfacheres, z.b. open x.y for hex as #1
oder irgendwie kürzer als des
hier is der code:
Public Function Dateiöffnen()
Open Dateiname For Binary As #1
MsgBox ("Die datei: " + Dateiname + "wurde geöffnet")
Dim Liste As String
Dim b As String * 1
Dim c As Integer
Dim d As String

Liste = ""

For x = 1 To 20
Get #1, , b
c = Asc(b) \'buchstabe nach ascitab in zahl
d = Hex(c) \'integer in hexzahl (datentyp der hexzahl ist string)
Liste = Liste + d
Next x

UserForm1.TextBox1.Text = Liste
Close #1
End Function

gruß Teflon

bei Antwort benachrichtigen
Teflon (Anonym) „Hallo das geht etwas einfacher. Mit dem Vwariablentyb byte also dim wert as byte...“
Optionen

Danke das funzt jetzt hier is der code mit dems momentan läuft is zwar sau lahm (je nach größe der datei dauert das schon ne weile)aber ich werd ja später nicht die ganze datei in ne Variable lesen sondern nur einzelne werte aus der datei auslesen
Public Dateiname
Public Dateigröße As Integer
Public bytewert(2000000) As Byte '2mile weil mein Savegame 1,9mil b groß is
Public Hexzahl(2000000) As String * 2

Public Function Dateidialog() As String
Dateidialog = Application.GetOpenFilename
End Function

Public Function Dateiöffnen()
Open Dateiname For Binary As #1
MsgBox ("Die datei: " + Dateiname + "wurde geöffnet")
Dim Liste As String
Dim i As Long
i = 0
Liste = ""
Do While Not EOF(1)
i = i + 1
Get #1, , bytewert(i)
If bytewert(i) Hexzahl(i) = "0" + Hex(bytewert(i))
Else
Hexzahl(i) = Hex(bytewert(i))
End If
Liste = Liste + Hexzahl(i)
Loop
UserForm1.TextBox1.Text = Liste
Close #1
End Function

bei Antwort benachrichtigen