AW: Datei Byteweise einlesen
09.12.2005 13:00:37
MichaV
Hallo Reinhardt,
hier mal ein Beispiel:
Option Explicit
Sub Schreiben()
'Ein Integer- Datenfeld in eine Datei schreiben
'Super einfache Möglichkeit, komplexe Variablen (Arrays oder benutzerdefinierte Typen) in eine Datei zu schreiben.
Dim i As Integer
Dim x(1 To 10) As Integer
For i = 1 To 10: x(i) = i * 10 : Next i
Open "e:\privat\test.dat" For Binary As #1
Put #1, , x
Close #1
End Sub
'aus dieser Datei lesen
Sub Lesen()
Dim a(1 To 10) As Long '!als Long deklariert
Dim b As Integer '!nicht als Datenfeld deklariert
Dim c (1 to 10) As Integer
Open "e:\privat\test.dat" For Binary As #1
Get #1, , a
Get #1, 5, b 'einen Integer (b) ab der 5. Position der Datei auslesen -> Ein Integer Wert besteht aus 2 Bytes.
'In der Datei wurden mehrere Integer- Werte ab der 1. Position gespeichert (das mußt Du wissen!)
'Also steht in der 1. und 2. Position der Datei der erste Integer (x(1)=10),
'in der 3. und 4. Position der 2. Integer (x(2)=20) und ab der 5. Position der 3. Integer- Wert (30)
Get #1, 1, c 'weil c wie x deklariert wurde, werden hier alle Daten korrekt eingelesen
Close #1
MsgBox a(3) 'Falscher Wert, weil Variable als Long deklariert, Wert aber als Integer gespeichert
MsgBox b
MsgBox c(3)
End Sub
Du musst also genau wissen, welche Daten(-Typen) sich wo in der Datei befinden, um diese richtig auslesen zu können. Bei selbst erstellten Dateien ist das oft kein Problem, bei z.B. bmp- Dateien stehen die Informationen im Header der Datei, dessen Struktur bekannt sein muss. Anhand dieser Infos können dann die eigentlichen Daten der Datei abgegriffen werden.
Gruss- Micha