Ein byte einer Datei ändern

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von CFXG.

    Ein byte einer Datei ändern

    Ja Sorry aber ich weiß einfach nicht wie ich es erklähren soll oder gar programmieren. Ich habe viel versucht...
    Also als Dateianhang habe ich eine Datei, von der die ersten 49 Byte der Header also die Überschrift ist. So nun verusche ich schon die ganze zeit, NUR byte 45 zu ändern. Also byte 45 ist "Chr(16)". Und nun soll aus byte 45 "Chr(17)" werden... Könntet ihr mir helfen? hier mein Code:

    appdatapath & "\AirStudio\" & TextBox4.Text & "\Destination\" & "Header.txt"=Der ausgeschnittene header(Ist dort schon falsch, Warum steht unten)
    ModelsBefore ist 16. ModelsAfter 17.

    VB.NET-Quellcode

    1. Dim Newheader As String
    2. Dim tmp2 As Array
    3. Headerstring = IO.File.ReadAllText(appdatapath & "\AirStudio\" & TextBox4.Text & "\Destination\" & "Header.txt", System.Text.Encoding.Default)
    4. tmp2 = Split(Headerstring, Chr(62))
    5. Dim tmpString As String
    6. tmpString = tmp2(1)
    7. If tmpString.StartsWith(Chr(ModelsBefore)) Then
    8. tmpString = Replace(tmpString, Chr(ModelsBefore), Chr(62) & Chr(ModelsAfter))
    9. Newheader = tmp2(0) & tmpString
    10. End If


    So das problem:

    Der original header sieht so aus (Nur ein bischen byte 11-14 als hex!!!)

    00 00 0D 00


    So der neue generierte header, wo eigentlich nur der zweite teil verändert wurde, ist so. (Wieder gleiche Bytes in Hex)

    00 00 0A 00 Warum ist dort nun 0A???
    Wenn ich eine Datei speicher sage ich "System.Text.Encoding.Default" Ist das richtig?
    Es funktioniert bei der ganzen Datei super, nur beim Header machts probleme... Die Datei wurde am anfang gesplittet. Und dort ist das Problem schon mit 0A... Warum nur? Code ungefähr so.


    VB.NET-Quellcode

    1. Dim SecondFile as Array
    2. SecondFile = Split(RichTextBox2.Text, Chr(32) & Chr(127) & Chr(101) & Chr(94))
    3. For i = 0 To SecondFile.Length - 1
    4. If i = 0 Then
    5. IO.File.WriteAllText(appdatapath & "\AirStudio\" & TextBox4.Text & "\Destination\" & "Header.txt", SecondFile(i), System.Text.Encoding.Default)
    6. Else
    7. IO.File.WriteAllText(appdatapath & "\AirStudio\" & TextBox4.Text & "\Destination\" & "Part" & i - 1 & ".txt", Chr(32) & Chr(127) & Chr(101) & Chr(94) & SecondFile(i), System.Text.Encoding.Default)
    8. End If
    9. Next



    Bitte helft mir. Ich brauche nur eine möglicghkeit, den 45 byte der ganzen Datei zu ändern. Der ganze Rest funktioniert perfekt :D


    Danke im vorraus
    Dateien
    • Rico.rar

      (316,24 kB, 103 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „CFXG“ ()

    Ja das Problem ist, er hat es ja schon falsch gespeichert, also bringt das richtig auslesen nichts mehr... Und wie funktioniert "WriteAllBytes" mit einem string?
    Sorry vollständiger Beginner :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CFXG“ ()

    msdn.microsoft.com/en-us/libra…o.file.writeallbytes.aspx

    VB.NET-Quellcode

    1. Dim buffer() As Byte = System.IO.File.ReadAllBytes("Dateiname")
    2. Dim index As Integer = 10 '<-index des Bytes, welcher geändert werden soll...
    3. buffer(index) = CByte(128)
    4. System.IO.File.WriteAllBytes(buffer,"Dateiname")
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    System.Text.Encoding.DEINENCODING.GetString(ByteArray)
    <->
    System.Text.Encoding.DEINENCODING.GetBytes(String)

    aber dann könntest du es ja direkt als String auslesen?!
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    System.Text.Encoding.DEINENCODING.GetString(ByteArray)
    <->
    System.Text.Encoding.DEINENCODING.GetBytes(String)

    aber dann könntest du es ja direkt als String auslesen?!

    jvbsl schrieb:

    System.Text.Encoding.DEINENCODING.GetString(ByteArray)
    <->
    System.Text.Encoding.DEINENCODING.GetBytes(String)

    aber dann könntest du es ja direkt als String auslesen?!
    Kannst du mir sagen was für Encoding ich nehmen kann? Das mit der angehängten Datei funktioniert? Alle die ich bisher getestet habe machen Fehler wie dieses "0A" :(
    ja, indem du das ganze in einer Schleife durchläufst und jedes Byte mit Chr in einen Char umwandelst, dies entspricht aber dem ASCII Encoding...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---