Get-Anweisung
Liest Daten aus einer geöffneten Datenträgerdatei in eine Variable ein.
Syntax
Get [ # ] filenumber, [ recnumber ], varname
Die Syntax der Get-Anweisung besteht aus folgenden Teilen:
Bestandteil | Beschreibung |
---|---|
filenumber | Erforderlich. Eine beliebige gültige Dateinummer. |
recnumber | Optional. Wert vom Typ Variant (Long). Datensatznummer (Dateien im Random-Modus) oder Byte-Nummer (Dateien im Binary-Modus), an der der Lesevorgang beginnt. |
varname | Erforderlich. Name einer gültigen Variablen, in die die Daten eingelesen werden. |
Hinweise
Mit Get gelesene Daten werden in der Regel mit Put in eine Datei geschrieben. Der erste Datensatz oder das erste Byte in einer Datei beginnt an Position 1, der zweite Datensatz oder das zweite Byte an Position 2 usw. Wenn Sie recnumber weglassen, wird der nächste Datensatz oder das nächste Byte nach der letzten Get- oder Put-Anweisung (oder auf die die letzte Seek-Funktion verweist) gelesen. Sie müssen Kommas als Trennzeichen angeben, zum Beispiel:
Get #4,,FileBuffer
Für Dateien, die im Random -Modus geöffnet werden, gelten die folgenden Regeln:
Wenn die Länge der zu lesenden Daten kleiner als die länge ist, die in der Len-Klausel der Open-Anweisung angegeben ist, liest Get nachfolgende Datensätze an Datensatzlängengrenzen. Der freie Raum zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem bestehenden Inhalt des Dateipuffers aufgefüllt. Da die Menge der Fülldaten nicht mit Sicherheit bestimmt werden kann, sollten die Datensatzlänge und die Länge der eingelesenen Daten übereinstimmen.
Wird eine Zeichenfolge variabler Länge in die Variable eingelesen, liest Get zunächst einen 2-Byte-Deskriptor mit der Länge der Zeichenfolge und dann die Daten, die in die Variable eingelesen werden. Daher muss die im Len -Abschnitt der Open -Anweisung festgelegte Datensatzlänge mindestens 2 Bytes größer sein als die tatsächliche Länge der Zeichenfolge.
Wenn die Variable, in die eingelesen wird, ein Wert vom Typ Variant mit einem numerischen Typ ist, liest Get zunächst 2 Bytes, die den VarType von Variant identifizieren, und dann die Daten, die in die Variable eingelesen werden. Beim Lesen eines Werts vom Typ Variant mit VarType 3 liest Get zum Beispiel 6 Bytes: 2 Bytes identifizieren Variant als VarType 3 (Long), und 4 Bytes enthalten die Daten vom Typ Long. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muss also mindestens 2 Bytes größer sein als die aktuell zum Speichern der Variablen benötigte Anzahl an Bytes.
Wenn die Variable, in die eingelesen wird, ein Wert vom Typ Variant mit einem VarType 8 (String) ist, liest Get zunächst 2 Bytes, die den VarType identifizieren, dann 2 Bytes, die die Länge der Zeichenfolge angeben, und anschließend die Daten der Zeichenfolge. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muss also mindestens 4 Bytes größer sein als die tatsächliche Länge der Zeichenfolge.
Wenn die Variable, in die eingelesen wird, ein dynamisches Datenfeld ist, liest Get eine Beschreibung, deren Länge 2 plus 8 mal der Anzahl der Dimensionen entspricht, also 2 + 8 * NumberOfDimensions. Die durch den Len-Abschnitt in der Open-Anweisung angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die Daten des Datenfelds und die Datenfeldbeschreibung zu lesen. Die folgende Datenfelddeklaration erfordert 118 Bytes, wenn das Datenfeld auf einen Datenträger geschrieben wird.
Dim MyArray(1 To 5,1 To 10) As Integer
Die 118 Bytes werden wie folgt verteilt: 18 Bytes für den Deskriptor (
2 + 8 * 2
) und 100 Bytes für die Daten (5 * 10 * 2
).Wenn die Variable, in die eingelesen wird, ein Datenfeld fester Länge ist, liest Get nur die Daten. Es wird keine Beschreibung gelesen.
Wenn die Variable, in die eingelesen wird, einen anderen Typ (weder Zeichenfolge variabler Länge noch Variant) hat, liest Get nur die Daten der Variablen. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muss also größer oder gleich sein wie die Länge der eingelesenen Daten.
Get liest Elemente von benutzerdefinierten Typen, als ob jedes einzelne Element separat gelesen würde, außer dass zwischen den Elementen keine Leerräume vorhanden sind. Auf dem Datenträger wird einem dynamischen Datenfeld eines benutzerdefinierten Typs (Put geschrieben) eine Beschreibung vorangestellt, deren Länge der Summe von 2 und dem Achtfachen der Anzahl an Dimensionen entspricht, also 2 + 8 * NumberOfDimensions. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muss größer oder gleich wie die Summe aller Bytes sein, die zum Lesen der einzelnen Elemente, einschließlich aller Datenfelder und ihrer Beschreibungen, erforderlich sind.
Für Dateien, die im Binary -Modus geöffnet werden, gelten dieselben Regeln wie für Dateien im Random -Modus, mit den folgenden Ausnahmen:
Der Len -Abschnitt der Open -Anweisung hat keine Wirkung. Get liest alle Variablen nacheinander vom Datenträger, das heißt ohne Zwischenräume zwischen den Datensätzen.
Bei jedem Datenfeld, das kein Datenfeld eines benutzerdefinierten Typs ist, liest Get nur die Daten. Es wird keine Beschreibung gelesen.
Get liest Zeichenfolgen variabler Länge, die keine Elemente eines benutzerdefinierten Typs sind, ohne den 2 Bytes großen Längendeskriptor zu benötigen. Die Anzahl gelesener Bytes entspricht der Anzahl von Zeichen in der Zeichenfolge. Die folgenden Anweisungen lesen beispielsweise 10 Bytes aus der Datei mit der Dateinummer 1:
VarString = String(10," ") Get #1,,VarString
Beispiel
In diesem Beispiel wird die Get -Anweisung verwendet, um Daten aus einer Datei in eine Variable einzulesen. In diesem Beispiel wird angenommen, dass TESTFILE
eine Datei mit fünf Datensätzen des benutzerdefinierten Typs Record
ist.
Type Record ' Define user-defined type.
ID As Integer
Name As String * 20
End Type
Dim MyRecord As Record, Position ' Declare variables.
' Open sample file for random access.
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
' Read the sample file using the Get statement.
Position = 3 ' Define record number.
Get #1, Position, MyRecord ' Read third record.
Close #1 ' Close file.
Siehe auch
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.