Den aktuellen Zustand eines Objekts kann man in .NET 2.0 sehr leicht im XML-Format speichern. Man benötigt nur wenige Zeilen Code um auch sehr umfangreiche Objekte in eine Datei zu speichern. Dabei hilft uns die Klasse System.Xml.Serialization.XmlSerializer. Eine so erzeugte Datei kann jederzeit eben so leicht wieder in ein Objekt geladen werden.
Funktion zum Speichern eines Objekts: ''' <summary> ''' Der Inhalt des übergebenen Objekts wird im XML-Format ''' unter dem Speicherpfad gespeichert ''' </summary> ''' <typeparam name="T">Typ (Klasse) welche abgespeichert wird</typeparam> ''' <param name="Objekt">Objekt dessen Inhalt gespeichert wird</param> ''' <param name="Speicherpfad">Pfad unter welchem der Inhalt des ''' Objekts gespeichert wird, muss nicht mit xml enden</param> ''' <returns>Funktion erfolgreich durchgeführt</returns> ''' <remarks></remarks> Public Shared Function ObjektSpeichern(Of T)( _ ByVal Objekt As T, _ ByVal Speicherpfad As String) As Boolean Dim Serializer As System.Xml.Serialization.XmlSerializer Dim Stream As System.IO.FileStream = Nothing Try ' Stream zum Speichern öffen Stream = New System.IO.FileStream(Speicherpfad, _ IO.FileMode.Create) ' Übergebene Klasse in das XML-Format serialisieren Serializer = _ New System.Xml.Serialization.XmlSerializer( _ Objekt.GetType) ' Objekt abspeichern Serializer.Serialize(Stream, Objekt) ' Stream wieder schließen Stream.Close() Return True Catch ex As Exception If Not Stream Is Nothing Then Stream.Close() End If Debug.Print("Fehler" & ex.Message) Return False End Try End Function Funktion zum Laden einer Klasse: ''' <summary> ''' Übergebenes Objekt wird mit dem Inhalt der ''' übergebenen XML-Datei befüllt ''' </summary> ''' <typeparam name="T">Typ (Klasse) welche abgespeichert wird</typeparam> ''' <param name="Ladepfad">Pfad der XML-Datei, muss mit der ''' Klasse serialisierbar sein</param> ''' <param name="Objekt">Objekt welches mit dem Inhalt der XML-Datei ''' befüllt wird</param> ''' <returns>Funktion erfolgreich durchgeführt</returns> ''' <remarks></remarks> Public Shared Function ObjektLaden(Of T)( _ ByVal Ladepfad As String, _ ByRef Objekt As T) _ As Boolean Dim Serializer As System.Xml.Serialization.XmlSerializer Dim Stream As System.IO.FileStream = Nothing Try ' Stream zum Lesen öffen Stream = New System.IO.FileStream(Ladepfad, IO.FileMode.Open) ' Übergebene Klasse in das XML-Format serialisieren Serializer = _ New System.Xml.Serialization.XmlSerializer(Objekt.GetType) ' Objekt mit dem Inhalt der Datei befüllen Objekt = CType(Serializer.Deserialize(Stream), T) ' Stream wieder schließen Stream.Close() Return True Catch ex As Exception If Not Stream Is Nothing Then Stream.Close() End If Debug.Print("Fehler" & ex.Message) Return False End Try End Function Beispiel für das Speichern und Laden von Objekten Public Class Class1 Dim sTest1 As String Dim sTest2 As String Dim iTest1 As Integer Dim bTest1 As Boolean Public Property String1() As String Get Return sTest1 End Get Set(ByVal value As String) sTest1 = value End Set End Property Public Property String2() As String Get Return sTest2 End Get Set(ByVal value As String) sTest2 = value End Set End Property Public Property Integer1() As Integer Get Return iTest1 End Get Set(ByVal value As Integer) iTest1 = value End Set End Property Public Property Boolean1() As Boolean Get Return bTest1 End Get Set(ByVal value As Boolean) bTest1 = value End Set End Property End Class Wichtig ist, dass die Klasse, sowie die Propertys als Public deklariert werden. Fügen Sie dem Projekt jetzt noch eine Form mit zwei Buttons hinzu und benennen die Buttons "btnLaden" und "btnSpeichern". In der Codeansicht des Formulars fügen Sie nun bitte folgenden Code ein: Private Sub btnSpeichern_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSpeichern.Click ' Objekt mit der Class1 zum Testen deklarieren Dim oSpeichern As New Class1 ' Objekt befüllen oSpeichern.Boolean1 = True oSpeichern.Integer1 = 1234 oSpeichern.String1 = "ABC" oSpeichern.String2 = "defg" ' Objekt auf dem Desktop speichern Dim sPfad As String sPfad = System.Environment.GetFolderPath( _ Environment.SpecialFolder.Desktop) sPfad = sPfad & "\Test.xml" ObjektSpeichern(Of Class1)(oSpeichern, sPfad) End Sub Private Sub btnLaden_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnLaden.Click ' Objekt mit der Class1 zum Testen deklarieren Dim oLaden As New Class1 ' Objekt mit der Datei auf dem Desktop befüllen Dim sPfad As String sPfad = System.Environment.GetFolderPath( _ Environment.SpecialFolder.Desktop) sPfad = sPfad & "\Test.xml" If IO.File.Exists(sPfad) Then ObjektLaden(Of Class1)(sPfad, oLaden) ' Inhalt des Testobjekts in das Direktfenster ausgeben Debug.Print(CStr(oLaden.Boolean1)) Debug.Print(CStr(oLaden.Integer1)) Debug.Print(oLaden.String1) Debug.Print(oLaden.String2) Else Debug.Print("Die Datei: " & sPfad & " ist nicht vorhanden") End If End Sub Fügen Sie der Form abschließend noch die beiden am Anfang aufgezeigten Funktion zum Laden und Speichern der Objekte hinzu (Function ObjektSpeichern und Function ObjektLaden). Wenn Sie nun auf den Button "btnSpeichern" klicken wird das Objekt, mit dem im Code bestimmten Inhalt, auf Ihrem Desktop unter Test.xml gespeichert. <?xml version="1.0"?> <Class1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <String1>ABC</String1> <String2>defg</String2> <Integer1>1234</Integer1> <Boolean1>true</Boolean1> </Class1> Durch Klick auf "btnLaden" wird ein leeres Objekt mit dem Inhalt der Test.xml befüllt. Dieser Tipp wurde bereits 18.965 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats September 2024 Dieter Otter Übergabeparameter: String oder Array? Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |