| Hierzu nutzt man wie bei den typisierten Dateien den Get-Befehl. Die Syntax ist identisch, so daß es keine gesonderten Beschreibung nötig ist. Man sollte jedoch immer an den Byte-Satzzeiger denken. Hier möchte ich nun das angesprochene Beispiel vorstellen, an dem man das Verhalten des Satzzeigers leicht erkennen kann. Dim Data1 As Byte
Dim Data2 As Long
Dim Data3() As Byte
Dim FN As Integer
FN = FreeFile
Open "C:\Test.txt" For Random As FN Len = Len(Data2)
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data2
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data2
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Close FN
ReDim Data3(9) Open "C:\Test.txt" For Binary As FN
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data2
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data2
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data1
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data1
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Get FN, , Data3
MsgBox "Satzzeiger steht an der Position: " & Seek(FN)
Close FN Listing 2 Zuerst wird eine Datei im Random-Modus [also als typisierte Datei] geöffnet und die Datensatzlänge auf die Länge von Data2 eingestellt. Danach wird die Position des Satzzeigers in eine MsgBox ausgegeben, diese sollte direkt nach dem Öffnen der Datei auf eins stehen. Jetzt wird ein Datensatz aus der Datei gelesen und der Datensatzzeiger automatisch auf den nächsten Datensatz gebracht. Dieser wird wieder in der MsgBox angezeigt. Obwohl wir vier Bytes aus der Datei gelesen haben, zeigt der Satzzeiger auf den zweiten Datensatz. Das ist bei typisierten Dateien auch richtig so. Beim nächstem Lesen aus der Datei wird der Datensatzzeiger wieder um eins erhöht. Wir schließen jetzt die Datei und öffnen sie erneut, diesmal jedoch im binären Modus. Die MsgBox zeigt, dass der Datensatzzeiger nach dem Öffnen der Datei, wie bei den typisierten Dateien, auf eins steht. Jetzt lesen wir einen Long-Wert aus der Datei. Der Datensatzzeiger steht diesmal nicht auf zwei sondern auf fünf. Das ist völlig korrekt, ist doch eine Longvariable vier Bytes groß und 1 + 4 = 5. Jetzt wird noch mal ein Longwert gelesen, der Satzzeiger steht dann also auf 9. Als nächstes wird ein Bytewert gelesen und der Satzzeiger um ein Byte erhöht, was 10 ergibt. Wie es in dem Code weiter geht sollte eigentlich schon jedem bekannt sein. Am Ende wird nun noch ein ganzes Array auf einen Schlag gelesen. Hier ist zu beachten, dass das Array vor dem lesen auf die gewünschte Länge initialisiert wird, da Get sonst nicht weiss, wie viel gelesen werden muss. Wie man bereits sehen kann, ist es nicht ohne weiteres möglich, Daten die nicht von konstanter Länge sind mitten aus der Datei zu lesen, es sei denn man merkt sich die Position an der die Daten liegen und liest diese mit der Datensatznummer aus. Sollte die Position der Daten in der Datei bekannt sein ist es empfehlenswert diese mit in den Get-Befehl einzugeben. Noch eine Anmerkung am Rande. Sollte man unter VB 3 mit Byte-Werten gearbeitet haben (Nachbildung eines Byte as String * 1) muss man diese Definition ab VB 4 in den neuen Datentyp Byte umwandeln da mittlerweile die Deklaration String * 1 einem zwei Byte langen Wert entspricht. |