vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
User-Settings in XML schreiben 
Autor: Schü
Datum: 02.02.10 09:49

Hallo!

Habe ein kleines Problem: Ich habe eine Klasse SettingManager, die mir Programmeinstellungen in eine XML-Datei sichern soll. siehe http://msdn.microsoft.com/de-de/library/bb979386.aspx

Dabei war mein Hintergedanke, dass natürlich gewisse Voreinstellungen der Variablen (wie seinerzeit beim Lesen aus Ini-Dateien) vorgegeben werden sollen, falls die Setting.Xml noch nicht existiert, oder weitere Optionen hinzukommen.

Hier das Listing:
Imports System.IO
Imports System.Xml.Serialization
Imports System.Environment
Imports Microsoft.Win32
 
 
<Serializable()> Public Class UserSettings
    Public Oberfläche As optOberfläche
    Public Benennung As optBenennung
 
    Public DBPrüfen As Boolean = True
 
    Public Sub New()
        Oberfläche = New optOberfläche
        Benennung = New optBenennung
        Edit = New optEdit
    End Sub
End Class
 
Public Class SettingManager
    Public Shared Function Save(ByVal mySettings As UserSettings, ByVal _
      FileName As String) As Boolean
        Dim configFile As Stream = Nothing
        Try
            'Verzeichnis erstellen, falls nicht vorhanden...
            Dim d As New DirectoryInfo(Path.GetDirectoryName(FileName))
            d.Create()
 
            Dim xs As New XmlSerializer(GetType(UserSettings))
            If IO.File.Exists(FileName) Then IO.File.Delete(FileName)
            configFile = IO.File.Open(FileName, FileMode.Create, _
              FileAccess.Write)
            xs.Serialize(configFile, mySettings)
 
            Return True
        Catch ex As Exception
            Return False
        Finally
            If Not IsNothing(configFile) Then configFile.Close()
        End Try
    End Function
    Public Shared Function Load(ByVal FileName As String) As UserSettings
        Dim configFile As Stream = Nothing
        Dim mSetting As UserSettings = Nothing
        Try
            'Verzeichnis erstellen, falls nicht vorhanden...
            Dim d As New DirectoryInfo(Path.GetDirectoryName(FileName))
            d.Create()
 
            If IO.File.Exists(FileName) Then
                Dim xs As New XmlSerializer(GetType(UserSettings))
                configFile = IO.File.Open(FileName, FileMode.Open, _
                  FileAccess.Read)
                mSetting = DirectCast(xs.Deserialize(configFile), UserSettings)
            Else
                mSetting = New UserSettings
            End If
 
            Return mSetting
        Catch ex As Exception
            mSetting = New UserSettings
            Return mSetting
        Finally
            If Not IsNothing(configFile) Then configFile.Close()
        End Try
    End Function
End Class
 
Public Class optBenennung
    Public Files() As String
    Public iFiles As Integer = 0
    Public Splitter As List(Of String)
 
    Friend Sub Reset()
        ReDim Files(0 To 8)
        Files(0) = "%i - %t"
        Files(1) = "%i - %r - %t"
        Files(2) = "%cd%r - %i - %t"
        Files(3) = "%r - %t"
        Files(4) = "%i - %lfdnr %t"
        Files(5) = "%i - %t %lfdnr"
        Files(6) = "%i - %r %t"
        Files(7) = "%i - %cd%r %t"
        Files(8) = "%cd%r %i - %t"
        iFiles = 9
 
        Splitter = New List(Of String)
        With Splitter
            .Clear()
            .Add(" CD")
            .Add(" DVD")
            .Add(" Disk")
            .Add(" Disc")
        End With
    End Sub
    Public Sub New()
        Reset()
    End Sub
End Class
 
Public Class optOberfläche
    Public Color_Found_DB As Integer = Color.Green.ToArgb
    Public Color_Not_Found_DB As Integer = Color.Red.ToArgb
End Class
Das geht soweit ganz gut.
Leider wird bei mir bei jedem Lade/Speichervorgang die Variable Splitter in UserSettings.Benennung
um 4 Strings erhöht. Das sieht dann in der XML-Datei etwa so aus:

<Splitter>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
<string> CD</string>
<string> DVD</string>
<string> Disk</string>
<string> Disc</string>
</Splitter>

Ich kann das irgendwie nicht abstellen.

Was mache ich falsch?

Schü
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
User-Settings in XML schreiben2.308Schü02.02.10 09:49
Re: User-Settings in XML schreiben1.234ModeratorDaveS02.02.10 12:10
Re: User-Settings in XML schreiben1.215Schü02.02.10 12:37
Re: User-Settings in XML schreiben1.225ModeratorDaveS02.02.10 12:54
Re: User-Settings in XML schreiben1.273Schü02.02.10 13:47
Re: User-Settings in XML schreiben1.304ModeratorDaveS02.02.10 13:48
Re: User-Settings in XML schreiben1.426Schü02.02.10 14:18
Re: User-Settings in XML schreiben1.248ModeratorDaveS02.02.10 14:21
Re: User-Settings in XML schreiben1.229Schü02.02.10 14:46

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel