|
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
|
|
|
|
|
|
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: [ 1054 ]
|
|
|