Immer wieder im Forum gefragt: wie kann man am einfachsten ein gesamtes Array in eine Datei speichern und von dort aus wieder laden? Die Antwort lautet: Serialization Nachfolgende zwei Funktionen zeigen, wie sich ein Array in binärer Form speichern und wieder laden lässt. Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary ''' <summary> ''' Speichert das angegebene Array binär in die angegebene Datei. ''' </summary> ''' <param name="Filename">Dateiname</param> ''' <param name="arr">Array, das gespeichert werden soll</param> Public Function ArraySave(ByVal Filename As String, _ ByVal arr As Object) As Boolean Dim fs As FileStream = Nothing Dim Success As Boolean = False Try ' Datei zum Schreiben öffnen fs = New FileStream(Filename, FileMode.Create, FileAccess.Write) ' Array serialisieren und speichern Dim formatter As New BinaryFormatter() formatter.Serialize(fs, arr) Success = True Catch ex As Exception Finally ' Datei schließen If Not IsNothing(fs) Then fs.Close() End Try Return (Success) End Function ''' <summary> ''' Liest ein zuvor gespeichertes Array aus der angegebenen Datei aus. ''' </summary> ''' <param name="Filename">Dateiname</param> ''' <param name="arr">Array, das die Daten enthalten soll.</param> Public Function ArrayRead(ByVal Filename As String, _ ByRef arr As Object) As Boolean Dim Success As Boolean = False ' Prüfen, ob Datei existiert If IO.File.Exists(Filename) Then Dim fs As FileStream = Nothing Try ' Datei zum Lesen öffnen fs = New FileStream(Filename, FileMode.Open, FileAccess.Read) ' Daten deserialiseren und dem Array zuweisen Dim formatter As New BinaryFormatter() arr = formatter.Deserialize(fs) Success = True Catch ex As Exception Finally ' Datei schließen If Not IsNothing(fs) Then fs.Close() End Try End If Return (Success) End Function Aufrufbeispiel: ' Integer-Array erstellen und speichern Dim myArray() As Integer = {1, 5, 7, 9, 11} ArraySave("d:\test-int.dat", myArray) ' Integer-Array aus Datei laden Dim myArray() As Integer = Nothing If ArrayRead("d:\test-int.bin", myArray) Then ... End If Die Funktionen lassen natürlich auch auf andere Datentypen anwenden, wie bspw. ein String-Array: ' Striong-Array erstellen und speichern Dim myArray() As String = {"Dieter", "Roland", "Heiko", "Julia"} ArraySave("d:\test-string.bin", myArray) ' String-Array aus Datei laden Dim myArray() As String = Nothing If ArrayRead("d:\test-string.dat", myArray) Then ... End If Dieser Tipp wurde bereits 26.625 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 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. |
Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |