Get-AnweisungGet statement

Liest Daten aus einer geöffneten Datenträgerdatei in eine Variable ein.Reads data from an open disk file into a variable.

SyntaxSyntax

Holen Sie sich [ # ] FileNumber, [ RecNumber ], varnameGet [ # ] filenumber, [ recnumber ], varname


Die Syntax der Get-Anweisung besteht aus folgenden Teilen:The Get statement syntax has these parts:

TeilPart BeschreibungDescription
filenumberfilenumber Erforderlich.Required. Eine beliebige gültige Dateinummer.Any valid file number.
RecNumberrecnumber Optional.Optional. Wert vom Typ Variant (Long).Variant (Long). Datensatznummer (Dateien im Random-Modus) oder Byte-Nummer (Dateien im Binary-Modus), an der der Lesevorgang beginnt.Record number (Random mode files) or byte number (Binary mode files) at which reading begins.
varnamevarname Erforderlich.Required. Name einer gültigen Variablen, in die die Daten eingelesen werden.Valid variable name into which data is read.

HinweiseRemarks

Mit Get gelesene Daten werden normalerweise in eine Datei mit Put geschrieben.Data read with Get is usually written to a file with Put. 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.The first record or byte in a file is at position 1, the second record or byte is at position 2, and so on. Wenn Sie _RecNumber_weglassen, wird der nächste Datensatz oder das nächste Byte, das auf die letzte Get -oder Put - Anweisung folgt (oder auf die letzte Such Funktion zeigt) gelesen.If you omit recnumber, the next record or byte following the last Get or Put statement (or pointed to by the last Seek function) is read. Sie müssen Kommas als Trennzeichen angeben, zum Beispiel:You must include delimiting commas, for example:

Get #4,,FileBuffer 

Für Dateien, die im Random -Modus geöffnet werden, gelten die folgenden Regeln:For files opened in Random mode, the following rules apply:

  • Wenn die Länge der zu lesenden Daten kleiner als die in der len -Klausel der Open -Anweisung angegebene Länge ist, liest Get nachfolgende Datensätze für Datensatzlängen Begrenzungen.If the length of the data being read is less than the length specified in the Len clause of the Open statement, Get reads subsequent records on record-length boundaries. Der freie Raum zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem bestehenden Inhalt des Dateipuffers aufgefüllt.The space between the end of one record and the beginning of the next record is padded with the existing contents of the file buffer. Da die Menge der Fülldaten nicht mit Sicherheit bestimmt werden kann, sollten die Datensatzlänge und die Länge der eingelesenen Daten übereinstimmen.Because the amount of padding data can't be determined with any certainty, it is generally a good idea to have the record length match the length of the data being read.

  • 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.If the variable being read into is a variable-length string, Get reads a 2-byte descriptor containing the string length and then reads the data that goes into the variable. 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.Therefore, the record length specified by the Len clause in the Open statement must be at least 2 bytes greater than the actual length of the string.

  • 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.If the variable being read into is a Variant of numeric type, Get reads 2 bytes identifying the VarType of the Variant and then the data that goes into the variable. 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.For example, when reading a Variant of VarType 3, Get reads 6 bytes: 2 bytes identifying the Variant as VarType 3 (Long) and 4 bytes containing the Long data. 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.The record length specified by the Len clause in the Open statement must be at least 2 bytes greater than the actual number of bytes required to store the variable.

    Hinweis

    Sie können die Get -Anweisung verwenden, um ein Variant - Array vom Datenträger zu lesen, aber Get kann nicht verwendet werden, um eine skalare Variante mit einem Array zu lesen.You can use the Get statement to read a Variant array from disk, but you can't use Get to read a scalar Variant containing an array. You also can't use Get to read objects from disk.You also can't use Get to read objects from disk.

  • 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.If the variable being read into is a Variant of VarType 8 (String), Get reads 2 bytes identifying the VarType, 2 bytes indicating the length of the string, and then reads the string data. 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.The record length specified by the Len clause in the Open statement must be at least 4 bytes greater than the actual length of the string.

  • 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.If the variable being read into is a dynamic array, Get reads a descriptor whose length equals 2 plus 8 times the number of dimensions, that is, 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.The record length specified by the Len clause in the Open statement must be greater than or equal to the sum of all the bytes required to read the array data and the array descriptor. Die folgende Datenfelddeklaration erfordert 118 Bytes, wenn das Datenfeld auf einen Datenträger geschrieben wird.For example, the following array declaration requires 118 bytes when the array is written to disk.

      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).The 118 bytes are distributed as follows: 18 bytes for the descriptor (2 + 8 * 2), and 100 bytes for the data (5 * 10 * 2).

  • Wenn die Variable, in die eingelesen wird, ein Datenfeld fester Länge ist, liest Get nur die Daten.If the variable being read into is a fixed-size array, Get reads only the data. Es wird keine Beschreibung gelesen.No descriptor is read.

  • 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.If the variable being read into is any other type of variable (not a variable-length string or a Variant), Get reads only the variable data. Die im Len-Abschnitt der Open-Anweisung angegebene Datensatzlänge muss also größer oder gleich sein wie die Länge der eingelesenen Daten.The record length specified by the Len clause in the Open statement must be greater than or equal to the length of the data being read.

  • 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.Get reads elements of user-defined types as if each were being read individually, except that there is no padding between elements. 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.On disk, a dynamic array in a user-defined type (written with Put) is prefixed by a descriptor whose length equals 2 plus 8 times the number of dimensions, that is, 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.The record length specified by the Len clause in the Open statement must be greater than or equal to the sum of all the bytes required to read the individual elements, including any arrays and their descriptors.

Für Dateien, die im Binary -Modus geöffnet werden, gelten dieselben Regeln wie für Dateien im Random -Modus, mit den folgenden Ausnahmen:For files opened in Binary mode, all of the Random rules apply, except:

  • Der Len -Abschnitt der Open -Anweisung hat keine Wirkung.The Len clause in the Open statement has no effect. Get liest alle Variablen nacheinander vom Datenträger, das heißt ohne Zwischenräume zwischen den Datensätzen.Get reads all variables from disk contiguously; that is, with no padding between records.

  • Bei jedem Datenfeld, das kein Datenfeld eines benutzerdefinierten Typs ist, liest Get nur die Daten.For any array other than an array in a user-defined type, Get reads only the data. Es wird keine Beschreibung gelesen.No descriptor is read.

  • Get liest Zeichenfolgen variabler Länge, die keine Elemente eines benutzerdefinierten Typs sind, ohne den 2 Bytes großen Längendeskriptor zu benötigen.Get reads variable-length strings that aren't elements of user-defined types without expecting the 2-byte length descriptor. Die Anzahl gelesener Bytes entspricht der Anzahl von Zeichen in der Zeichenfolge.The number of bytes read equals the number of characters already in the string. Die folgenden Anweisungen lesen beispielsweise 10 Bytes aus der Datei mit der Dateinummer 1:For example, the following statements read 10 bytes from file number 1:

      VarString = String(10," ") 
      Get #1,,VarString 
    
    

BeispielExample

In diesem Beispiel wird die Get -Anweisung verwendet, um Daten aus einer Datei in eine Variable einzulesen.This example uses the Get statement to read data from a file into a variable. In diesem Beispiel wird angenommen, dass TESTFILE eine Datei mit fünf Datensätzen des benutzerdefinierten Typs Record ist.This example assumes that TESTFILE is a file containing five records of the user-defined type is a file containing five records of the user-defined type Record.

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 auchSee also

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.