vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
datei abspeichern mit serialize 
Autor: disconnect
Datum: 21.03.08 17:03

sehr geehrtes forum team!

ich hab ein kleines programm geschrieben für die Schule in Visual Studio 2005, vb. im moment arbeite ich an einer erweiterung, nämlich dass man sich seinen eigenen stundenplan abspeichern kann. den stundenplan speichere ich in ein zweidimensionales array, also:
Dim user_stdplan(5, 10) As String

5 für die wochentage, und jeweils 10 stunden für jeden tag.

jetzt würde ich gern dieses array weiterhin verfügbar machen, auch wenn die anwendung beendet wurde. ich hab schon einiges ausprobiert, zb mit savesetting usw, aber ich bin nie zu einem zufriedenstellenden ergebnis gekommen. nun bin ich auf dieser seite unter tipps und tricks fündig geworden, allerdings schaffe ich es einfach nicht auf mein programm umzuändern. (der Artikel: http://www.vbarchiv.net/archiv/tipp_details.php?pid=1749)

dazu hab ich in den code von meinem form:

Public Class Serializer
    Public Shared Sub Serialize(Of T)(ByVal compression As Boolean, _
      ByVal path As String, ByVal instance As T)
 
        Try
            Dim fs As Stream = New FileStream(path, FileMode.OpenOrCreate)
            Dim bf As New BinaryFormatter
            If compression Then fs = New GZipStream(fs, _
              CompressionMode.Compress)
 
            bf.Serialize(fs, instance)
            fs.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, Application.ProductName, _
              MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
 
    Public Shared Sub Serialize(Of T)(ByVal path As String, ByVal instance As T)
        Serialize(False, path, instance)
    End Sub
 
    Public Shared Function DeSerialize(Of T)(ByVal compression As Boolean, _
      ByVal path As String, ByVal defaultInstance As T) As T
 
        Try
            If Not File.Exists(path) Then
                Return defaultInstance
            End If
            Dim fs As Stream = New FileStream(path, FileMode.OpenOrCreate)
            Dim bf As New BinaryFormatter
            If compression Then fs = New GZipStream(fs, _
              CompressionMode.Decompress)
 
            DeSerialize = CType(bf.Deserialize(fs), T)
            fs.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, Application.ProductName, _
              MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Function
 
    Public Shared Function DeSerialize(Of T)(ByVal path As String, _
      ByVal defaultInstance As T) As T
 
        Return DeSerialize(Of T)(False, path, defaultInstance)
    End Function
 
    Public Shared Function DeSerialize(Of T As New)(ByVal path As String) As T
        Return DeSerialize(Of T)(path, New T)
    End Function
 
    Public Shared Function DeSerialize(Of T As New)( _
      ByVal compression As Boolean, ByVal path As String) As T
 
        Return DeSerialize(Of T)(compression, path, New T)
    End Function
End Class
 
<Serializable()> _
Public Class Verwaltung
    Public Items As List(Of stundenplan)
    Private Shared dataPath As String = _
      path.Combine(Application.StartupPath, "stundenplan.dat")
 
    Public Sub New()
        ' hinzufügen des Arrays, nur wie???
 
    End Sub
 
    Public Sub Save()
        ' Aufrufen der generischen Serialize-Funktion für 
        ' die Klasse Kontoverwaltung
        Serializer.Serialize(Of stundenplan)(dataPath, stundenplan) _
          'stundenplan ist die Klasse für das Form selber, also Array speichern 
        ' usw.
    End Sub
 
    Public Shared Function Load() As Verwaltung
        ' Dadurch, dass die Klasse "Sub New()" aufweist, kann die 
        ' Serializer-Klasse, wenn keine Datei vorhanden ist, 
        ' eine DefaultInstance zurückgeben.
        Return Serializer.DeSerialize(Of Verwaltung)(dataPath)
    End Function
 
End Class
Dieses hab ich fast 1 zu 1 aus dem Tipp übernommen.

in meinem weiteren code hab ich nun folgendes:

<Serializable()> _
Public Structure Stundenplan_data
    Dim stundenplan As Array
End Structure
ich glaube (wenn ich das richtig verstehe), dass ich nun im sub New() dieses array füllen muss, dass es dann serialisiert werden kann und als .dat datei abgespeichert werden kann.. ich hoffe es kann mir jemand helfen, bzw wenn jemand auch gleich so nett wäre und mir darstellt, wie ich diese .dat datei auch wieder auslesen kann und in ein zweidimensionales array speichern kann würde ich mich sehr freuen.

mfg disconnect

Gehe immer vom Guten Willen Anderer aus!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
datei abspeichern mit serialize1.891disconnect21.03.08 17:03
Re: datei abspeichern mit serialize1.016mikeb6921.03.08 18:37
Re: datei abspeichern mit serialize927disconnect21.03.08 19:41
Re: datei abspeichern mit serialize949disconnect21.03.08 20:29
Re: datei abspeichern mit serialize928Christian2522.03.08 00:36
Re: datei abspeichern mit serialize886disconnect22.03.08 10:44
Re: datei abspeichern mit serialize874mikeb6922.03.08 11:08
Re: datei abspeichern mit serialize1.002disconnect22.03.08 12:13
Re: datei abspeichern mit serialize977Moderatorralf_oop22.03.08 12:32
Re: datei abspeichern mit serialize920disconnect22.03.08 13:34

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-2024 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