Tipp 0419 Datenfeld (Variant) in Binär-Datei speichern
Autor/Einsender:
Datum:
  R. Müller
24.10.2004
Entwicklungsumgebung:   VB 6
Dieser Tipp zeigt eine, auch für Anfänger, schnell nachvollziehbare Methode, wie eine Variable vom Typ Variant in einer mit Open ... For Binary ... geöffneten Datei gespeichert und auch wieder ausgelesen werden kann. Diese Möglichkeit ist für alle VB-Versionen anwendbar.
Eine kaum noch bekannte Besonderheit des Datentyps Variant ist, dass er alle andere Variablentypen, also auch ein- oder mehrdimensionale (Ausnahme benutzerdefinierte) Datenfelder, enthalten kann. Der Vorteil dieser Speichermöglichkeit ist, dass diese Datei nicht mit einem Texteditor bearbeitet werden kann.
Code im Codebereich des Moduls
 
Option Explicit

Public Function SaveArrayInBinaryFile(ByVal sFileName As String, _
      ByRef varArray As Variant) As Boolean

  Dim FN As Integer

  On Error GoTo err_SaveArray

  If Len(Dir(sFileName)) > 2 Then
    Kill sFileName
  End If

  FN = FreeFile()
  Open sFileName For Binary As #FN
    Put #FN, 1, varArray
  Close #FN

  SaveArrayInBinaryFile = True

exit_Func:
  On Error GoTo 0
  Exit Function

err_SaveArray:
  MsgBox "Fehler-Nr. " & Err.Number & vbCr & Err.Description, , _
        "VB-fun-Demo"
  Resume exit_Func
End Function

Public Function ReadArrayFromBinaryFile(ByVal sFileName _
      As String) As Variant

  Dim FN         As Integer
  Dim avarArray  As Variant

  On Error GoTo err_ReadArray

  If Len(Dir(sFileName)) <= 2 Then
    Err.Raise 76
  End If

  FN = FreeFile()
  Open sFileName For Binary As #FN
    avarArray = Space(LOF(FN))
    Get #FN, 1, avarArray
  Close #FN

  ReadArrayFromBinaryFile = avarArray

exit_Func:
  On Error GoTo 0
  Exit Function

err_ReadArray:
  MsgBox "Fehler-Nr. " & Err.Number & vbCr & Err.Description, , _
        "VB-fun-Demo"
  Resume exit_Func
End Function
 
Code im Codebereich der Form
 
Option Explicit

Private m_strFileName As String

Private Sub Form_Load()
  m_strFileName = App.Path & "\Test.dat"

  If Len(Dir(m_strFileName)) <= 2 Then
    cmdReadData.Enabled = False
  End If
End Sub

Private Sub cmdSaveData_Click()
  Dim avarArray As Variant

  ReDim avarArray(5) As Variant
  avarArray(0) = "Birke"
  avarArray(1) = "Pappel"
  avarArray(2) = 234
  avarArray(3) = CDate(("13.8.2004 17:12:57")
  avarArray(4) = CDec("5645,2464534")
  avarArray(5) = CStr("5645,2464534")

  If SaveArrayInBinaryFile(m_strFileName, avarArray) Then
    cmdReadData.Enabled = True
  Else
    cmdReadData.Enabled = False
  End If
End Sub

Private Sub cmdReadData_Click()
  Dim avarArray As Variant
  Dim strText   As String
  Dim n         As Long

  avarArray = ReadArrayFromBinaryFile(m_strFileName)

  If IsArray(avarArray) Then
    For n = LBound(avarArray) To UBound(avarArray)
      strText = strText & vbCr & avarArray(n)
    Next
    MsgBox strText, , Me.Caption
  End If
End Sub
 
Weitere Links zum Thema
Binäre Ressourcen-Datei
Excel/VBA - Daten speichern/lesen (Binär-Datei)
Hinweis für VBA-Anwender
Die im Download befindliche *.bas-Datei kann für die Verwendung in einem (Office-)Programm im VB-Editor des entsprechenden Programms importiert werden. Die *.frm-Datei kann beispielsweise in Notepad geöffnet werden, und der kommentierte Code über die Zwischenablage in den Codebereich einer UserForm kopiert und entsprechend angepasst werden. Ein Import der im Download enthaltenen *.frm-Datei ist nicht möglich.

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (4,7 kB) Downloads bisher: [ 951 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 18. Juni 2011