Speichern eines Arrays

Despair Blue

Mitglied
Hi,
mich würde mal interessieren ob es möglich ist ganze Objekte abzuspeichern, sprich: z.B.: ein array mit 10 x 10 Werten versehen und er im Ganzen abzuspeichern um es dann wieder zu laden. Wer dem nich folgen könnte hier der code wie ich mir das denken würde:

Code:
Dim oSw As New IO.StreamWriter("C:\Array.dat")
        Dim Karte(10, 10) As String
        Dim n As Short
        Dim m As Short
        For n = 1 To 10
            For m = 1 To 10
                Karte(n, m) = "1"
            Next
        Next
        oSw.Write(Karte)
        oSw.Close()
        Dim oSr As New IO.StringReader("C:\Array.dat")
        Karte = oSr.ReadToEnd()

Bis zum Speichern funktioniert es noch, auch das Speichern geht noch, aber er will es dann nich öffnen und dem Array wieder übergeben und die gespeicherte Datei ist leer. gibt es da 'ne andere Möglichkeit?

Würde mich über Hilfe freuen ^^

mfg ¥Ð
 
Ich beschreibe das Problem mal etwas anders: Ich hab ein Array mit 275 x 275 Feldern und jetzt das Problem das gesamte Array speichern zu müssen, nur wie? Ich hab keine Ahnung wie ich das auch nur im entferntesten anstellen sollte. Ich hoffe ihr könnt mir helfen.

mfg ¥Ð
 
Zuletzt bearbeitet:
Propier mal noch ein oSW.Flush() vor dem Schliessen. Damit erzwingst Du, dass die Daten jetzt in die Datei geschrieben werden.
 
Zuletzt bearbeitet:
Leider geht's so auch nich, die Datei ist immernoch leer. Selbst wenn es gehen würde, weigert er sich immernoch über die read, readline oder readtoend methoden die datei einzulesen und dem array zuzuweisen, da er ja nen String liest und den nich in das 2-Dimensionale Array konvertieren kann (so sagt er...)
Aber trotzdem danke.

Wie würdet ihr denn 75625 Werte abspeichern und wieder laden? In VB 6.0 hätte ich es einfach als random gespeichert, geht das in .NET auch?
 
Ich hab es jetzt geschafft ein biliebig großes 1-Dimensionales Array zu speichern:
Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Karte As New Map
        Dim n As Short
        For n = 1 To 275
                Karte.Koordinaten(n, m) = "1"
        Next
        Dim obSer As New Xml.Serialization.XmlSerializer(GetType(Map))
        Dim obTw As New System.IO.FileStream("Karte.xml", IO.FileMode.Create)
        obSer.Serialize(obTw, Karte)
        obTw.Close()
        Me.Close()
    End Sub
End Class

Public Class Map
    Public Koordinaten(275) As String
    Sub New()
    End Sub
End Class

Sobald ich es aber 2-Dimensional mache:
Code:
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Karte As New Map
        Dim n As Short
        Dim m As Short
        For n = 1 To 275
            For m = 1 To 275
                Karte.Koordinaten(n, m) = "1"
            Next
        Next
        Dim obSer As New Xml.Serialization.XmlSerializer(GetType(Map))
        Dim obTw As New System.IO.FileStream("Karte.xml", IO.FileMode.Create)
        obSer.Serialize(obTw, Karte)
        obTw.Close()
        Me.Close()
    End Sub
End Class

Public Class Map
    Public Koordinaten(275, 275) As String
    Sub New()
    End Sub
End Class
Erhalte ich eine Fehlermeldung:
Code:
Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' ist in system.xml.dll aufgetreten.

Zusätzliche Informationen: Fehler beim Reflektieren des Typs 'Test_Solution.Map'.

Weiß Jemand was ich Falsch mache? Oder hat wer ne bessere Idee die Daten eines Arrays zu speichern?

ich würde mich über Hilfe wirklich riesig freuen.

mfg
 

Neue Beiträge

Zurück