MySettings -> mehrdimensionales Single Array abspeichern

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von brichun.

    MySettings -> mehrdimensionales Single Array abspeichern

    Hi,

    besteht die Möglichkeit in den MySettings ein mehrdimensionales Array vom Typ single zu speichern?

    Mein Array hat folgenden Aufbau

    VB.NET-Quellcode

    1. Dim A(,) As Single
    2. A = New Single(2,2){}


    hab im Forum 2 Dimensionales Array in MySettings speichern gefunden. Konnte mir nicht weiterhelfen, da sich die Antwort auf Strings bezieht.

    Gruß
    Brichun
    Wenn es nur 2*2=4 Werte sind, kannst Du sie auch einzeln abspeichern.
    Wenn es mehr wird, ist bestimmt eine DataTable angesagt, diese kannst Du per SaveXml(PFAD) und LoadXml(PFAD) handeln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die Settings sind auch nur eine XML-Datei.
    Du sollst nicht, sondern es ist bei größeren Datenmengen sinnvoll, es zu tun.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    mit dem serializer funktioniert es leider nicht wenn ich eine 2dimensionales Array auslagern möchte. Bei strings und einfachen werten geht es ohne Probleme.
    Auch bei Arrays mit einer Dimension.


    gruß
    Brichun

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

    Hi mike,
    der Code aus der MSDN funktioniert wer hätte das gedacht :)
    Da wollte ich an stelle des Objekts addresses vom Typ Hashtable durch mein eigenes Objekt myKonfig vom Typ Konfiguration ersetzen.

    VB.NET-Quellcode

    1. Dim addresses As New Hashtable
    2. addresses.Add("Jeff", "123 Main Street, Redmond, WA 98052")
    3. addresses.Add("Fred", "987 Pine Road, Phila., PA 19116")
    4. addresses.Add("Mary", "PO Box 112233, Palo Alto, CA 94301")
    5. 'Binary Formatter Test ----------------------------------------------
    6. Dim fs As New FileStream("Test.dat", FileMode.Create)
    7. Try
    8. Dim formatter As New BinaryFormatter
    9. formatter.Serialize(fs, addresses)
    10. fs.Close()
    11. Catch es As SerializationException
    12. MessageBox.Show("Fehler:" + es.Message)
    13. Throw
    14. Finally
    15. fs.Close()
    16. End Try



    Konfiguration

    VB.NET-Quellcode

    1. class Konfiguration
    2. Public A as Single
    3. Public Sub New(byval _Wert as Single)
    4. A = _Wert
    5. end Sub
    6. end Class


    angepasster Code

    VB.NET-Quellcode

    1. Dim myKonfig as new Konfiguration(2)
    2. 'Binary Formatter Test ----------------------------------------------
    3. Dim fs As New FileStream("Test.dat", FileMode.Create)
    4. Try
    5. Dim formatter As New BinaryFormatter
    6. formatter.Serialize(fs, myKonfig)
    7. fs.Close()
    8. Catch es As SerializationException
    9. MessageBox.Show("Fehler:" + es.Message)
    10. Throw
    11. Finally
    12. fs.Close()
    13. End Try


    Messagebox spuckt folgenden Fehler aus.

    Der Typ"windowsApplication2.Konfiguration" in Assembly "Projekt, Version = 1.0.0.0,Culture=neutral,PublicKeyToken=null" ist nicht als serialisierbar gekennzeichnet.

    Drei ???

    windowsApplication2.Konfiguration -> sieht nach meiner Klasse aus

    Braucht man in der Klasse eine Kennzeichnung?

    Gruß
    Brichun

    Edit:
    Ja man muss die Klasse als serialisierbar kennzeichnen

    VB.NET-Quellcode

    1. <Serializable()>
    2. Public Class Konfiguration
    3. Public A As Single
    4. Public Sub New(ByVal _Wert As Single)
    5. A = _Wert
    6. End Sub
    7. End Class


    Jetzt schauen wir mal ob wir nicht auch mehrdimensionale Arrays Binar Serialisieren können.

    Gruß
    Brichun

    Edit2:
    mehrdimensionale Arrays gehen auch :D *freude*

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