vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Variablen/Strings · Arrays   |   VB-Versionen: VB5, VB627.08.04
Array schnell speichern und wieder laden

Es ist gar nicht so schwer, ein Array in eine Datei zu speichern und auch wieder zu laden!

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  39.216 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10kein Beispielprojekt 

Wie würden Sie vorgehen, um bspw. ein String-Array in eine Datei zu speichern und bei Bedarf wieder zu laden?

Die meisten von uns würden das wahrscheinlich wie folgt angehen:

' Array speichern
Dim i As Long
Dim F As Integer
ReDim sArray(10)
 
' Array zeilenweise speichern
F = FreeFile
Open "MyArray.dat" For Output As #F
For i = 0 To 10
  Print #F, sArray(i)
Next i
Close #F
' Array einlesen
Dim i As Long
Dim F As Integer
ReDim sArray(10)
 
' Array zeilenweise auslesen
F = FreeFile
Open "MyArray.dat" For Input As #F
For i = 1 To 10
  Line Input #F, sArray(i)
Next i
Close #F

Das funktioniert ja wunderprächtig! Hat aber einen entscheidenden Nachteil: Zum einen muss das Array vor dem Einlesen aus der Datei korrekt dimensioniert sein, wobei die Größe bekannt sein muss und zum anderen benötigt man hier immer eine Schleife von 0....n - sowohl beim Speichern als auch beim Einlesen

Nachfolgend zeigen wir Ihnen, wie Sie sich das "Leben leichter machen können" Öffnet man die Datei nämlich im "Binary-Mode" lässt sich das gesamte Array mit nur einem einzigen Befehl speichern (Put...) - und auch wieder einlesen (Get ...) !!! Und was die Arraygröße betrifft, so wäre es doch sicherlich sinnvoll, diese gleich mit in der Datei zu speichern, um das Array dann beim Auslesen autom. auf die korrekte Größe dimensionieren zu können.

' Array in Datei speichern
Public Sub SaveArray(ByVal sFile As String, _
  vArray As Variant)
 
  Dim F As Integer
  Dim nCount As Long
 
  ' Falls Datei vorhanden, zunächst löschen
  If Dir$(sFile) <> "" Then Kill sFile
 
  ' Datei im Binary-Mode öffnen
  F = FreeFile
  Open sFile For Binary As #F
 
  ' Anzahl Elemente speichern
  nCount = UBound(vArray)
  Put #F, , nCount
 
  ' Array-Elemente speichern
  Put #F, , vArray
  Close #F
End Sub
' Array aus Datei einlesen
Public Function ReadArray(ByVal sFile As String) As Variant
  Dim F As Integer
  Dim nCount As Long
  Dim vArray As Variant
 
  ' Datei im BinaryMode öffnen
  If Len(Dir$(sFile)) > 0 Then
    F = FreeFile
    Open sFile For Binary As #F
 
    ' Anzahl Elemente lesen
    Get #F, , nCount
 
    ' Array dimensionieren und einlesen
    ReDim vArray(nCount)
    Get #F, , vArray
    Close #F
  End If
 
  ReadArray = vArray
End Function

Beispiel:

String-Array erstellen und in Datei speichern

ReDim MyArray(10) As String
Dim i As Long
 
For i = 0 To 10
  MyArray(i) = "Zeile " & CStr(i)
Next i
 
' Array speichern
SaveArray App.Path & "\MyArray.dat", MyArray

Array aus Datei einlesen

Dim MyArray() As String
MyArray = ReadArray(App.Path & "\MyArray.dat")
 
' Ist das Array dimensioniert?
If (Not Not MyArray) > 0 Then
  ' Inhalt zum Test in einer ListBox anzeigen
  Dim i As Long
  Dim nCount As Long
 
  nCount = UBound(MyArray)
  For i = 0 To nCount
    List1.AddItem MyArray(i)
  Next i
End If

P.S.: Das Ganze funktioniert auch wunderprächtig mit anderen Datentypen, wie bspw. Long-Arrays, etc. - ohne dass die beiden Prozeduren geändert werden müssen!
 

Dieser Tipp wurde bereits 39.216 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 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