Wie sichert man am besten Programmdaten und Arrays

08/04/2009 - 21:00 von Frank | Report spam
Hi
Mit welcher Klasse sichert man am besten Programmdaten. Ich möchte byte
Arrays (ca. 2000-10000 Byte) sowie einige Strings und integer Variablen
möglichst in einer Art Projekt-Datei sichern.
Wàre da ne XML Klasse sinnvoll. Gibts da vielleicht ein Beispiel wie man
die làd, speichert und àndert?



Mit besten Grüßen
Frank
 

Lesen sie die antworten

#1 Thorsten Doerfler
08/04/2009 - 22:15 | Warnen spam
Frank schrieb:
^^ Vor- und Zuname werden in diesen Gruppen gerne gesehen.

Mit welcher Klasse sichert man am besten Programmdaten. Ich möchte byte
Arrays (ca. 2000-10000 Byte) sowie einige Strings und integer Variablen
möglichst in einer Art Projekt-Datei sichern.
Wàre da ne XML Klasse sinnvoll. Gibts da vielleicht ein Beispiel wie man
die làd, speichert und àndert?



Hier bietet sich XML Serialisierung an. Hiermit kannst Du komplette
Klassenstrukturen persistieren und zu einem spàteren Zeitpunkt
wiederherstellen.

Ein auf die Schnelle zusammengeworfenes Beispiel ohne Anspruch auf
Vollstàndigkeit:

' ProjectSettings.vb
Imports System.Xml.Serialization

Public Class ProjectSettings
Private m_Data() As Byte
Private m_Value As Integer
Private m_Text As String

Public Sub New()

End Sub

Public Property Data() As Byte()
Get
Return m_Data
End Get
Set(ByVal value As Byte())
m_Data = value
End Set
End Property

Public Property Value() As Integer
Get
Return m_Value
End Get
Set(ByVal value As Integer)
m_Value = value
End Set
End Property

Public Property Text() As String
Get
Return m_Text
End Get
Set(ByVal value As String)
m_Text = value
End Set
End Property

Public Shared Function Load(ByVal path As String) As ProjectSettings
Dim lSerializer As New XmlSerializer(GetType(ProjectSettings))
Dim lStream As New IO.FileStream(path, _
IO.FileMode.Open, _
IO.FileAccess.Read, _
IO.FileShare.Read)
Dim lRet As ProjectSettings

lRet = DirectCast(lSerializer.Deserialize(lStream), ProjectSettings)

lStream.Close()

Return lRet
End Function

Public Sub Save(ByVal path As String)
Dim lSerializer As New XmlSerializer(Me.GetType())
Dim lStream As New IO.FileStream(path, IO.FileMode.Create)

lSerializer.Serialize(lStream, Me)

lStream.Close()
End Sub
End Class

Zum Demonstrieren ein Formular mit zwei Schaltflàchen:

' Form1.vb
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles Button1.Click

Dim lProject As New ProjectSettings

lProject.Data = System.Text.Encoding.UTF8.GetBytes( _
"Dies ist ein Blindtext.")
lProject.Text = "Hallo Welt"
lProject.Value = 123

lProject.Save("C:\test.xml")
End Sub

Private Sub Button2_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Button2.Click

Dim lProject As ProjectSettings
Dim lData As String

lProject = ProjectSettings.Load("C:\test.xml")
lData = System.Text.Encoding.UTF8.GetString(lProject.Data)

Debug.Print("Text: {0}; Value: {1}; Data: {2}", _
lProject.Text, lProject.Value, lData)

End Sub
End Class

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen