BinaryFormatter auf ein Array

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Phill.

    BinaryFormatter auf ein Array

    Hallo,
    und zwar versuche ich ein Array mit meiner Struktur auf diese Klasse anzuwenden.
    Um es dann in eine binäre Datei zu schreiben.

    VB.NET-Quellcode

    1. Public Structure tDaten
    2. Public Name As String
    3. Public Alter As Byte
    4. End Structure
    5. Private Daten(1) As tDaten
    6. Private Sub Datei_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. Daten(0).Alter = 13
    8. Daten(0).Name = "Horst"
    9. Daten(1).Alter = 12
    10. Daten(1).Name = "iX"
    11. End Sub
    12. 'Serialisieren des Array Daten
    13. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. Dim MyFile As New FileStream("Test.dat", FileMode.Create)
    15. Dim formatter As New BinaryFormatter()
    16. Try
    17. formatter.Serialize(MyFile, Daten)
    18. Catch u As System.Runtime.Serialization.SerializationException
    19. MessageBox.Show("Fehler: " & u.Message)
    20. Throw
    21. Finally
    22. MyFile.Close()
    23. End Try
    24. End Sub


    Nun kommt jedoch eine Fehlermeldung:
    Eine nicht behandelte Ausnahme des Typs 'System.Runtime.Serialization.SerializationException' ist in Programme.exe aufgetreten.

    Zusätzliche Informationen: Der Typ Programme.Datei+tDaten in Assembly Programme, Version=1.0.3128.30714, Culture=neutral, PublicKeyToken=null ist als serialisierbar markiert.

    Nun kann ich damit nicht so recht etwas anfangen.
    In der MSDN Library arbeiten die ja mit Hashtables, und hier im Forum hab ich auch schon etwas dazu gefunden:
    [VB.NET] Highscores verwalten und sichern
    Dort wird mit einer Liste gearbeitet.

    Was soll ich da machen?

    mfg Phill
    Entschuldigung für den Doppelpost, jedoch möchte ich zu diesem Thema kein neuen Thread aufmachen.
    UNd zwar klappt jetzt das reinschreiben in die Datei gut.
    Nun hänge ich bei dem Auslesen...
    Hier ist der Code:

    VB.NET-Quellcode

    1. 'Deserialisieren der Daten und einfügen in das Array
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    3. Dim MyFile As New FileStream("Test.dat", FileMode.Open)
    4. Dim formatter As New BinaryFormatter()
    5. Dim NeuDaten As tDaten
    6. NeuDaten = DirectCast(formatter.Deserialize(MyFile), tDaten)
    7. MyFile.Close()
    8. End Sub


    So das Problem, welches hier auftritt ist mir klar. Es kommt auch ein Fehler wegen der Typenkonvertierung.
    Was kann ich hier machen? Geht das in diese Richtung überhaupt mit einem Array oder benötige ich etwas anderes?

    mfg Phill