Put-AnweisungPut statement

Schreibt Daten aus einer Variablen in eine Datenträgerdatei.Writes data from a variable to a disk file.

SyntaxSyntax

Put [ # ] FileNumber, [ RecNumber ], varnamePut [ # ] filenumber, [ recnumber ], varname


Die Syntax der Put-Anweisung besteht aus den folgenden Teilen:The Put 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 Schreibvorgang beginnt.Record number (Random mode files) or byte number (Binary mode files) at which writing begins.
varnamevarname Erforderlich.Required. Name der Variablen mit Daten, die auf den Datenträger geschrieben werden sollen.Name of the variable containing data to be written to disk.

HinweiseRemarks

Mit Put geschriebene Daten werden normalerweise aus einer Datei mit Get gelesen.Data written with Put is usually read from a file with Get.

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 nach der letzten Get -oder Put -Anweisung oder der Verweis auf die letzte Such Funktion geschrieben.If you omit recnumber, the next record or byte after the last Get or Put statement, or pointed to by the last Seek function, is written. Sie müssen Kommas als Trennzeichen angeben, zum Beispiel:You must include delimiting commas, for example:

Put #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 geschriebenen Daten kleiner ist als die in der len -Klausel der Open -Anweisung angegebene Länge, schreibt Put nachfolgende Datensätze zu Datensatzlängen Begrenzungen.If the length of the data being written is less than the length specified in the Len clause of the Open statement, Put writes 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 geschriebenen 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 written. Wenn die Länge der geschriebenen Daten die im Len -Abschnitt der Open -Anweisung festgelegte Länge überschreitet, tritt ein Fehler auf.If the length of the data being written is greater than the length specified in the Len clause of the Open statement, an error occurs.

  • Ist die geschriebene Variable eine Zeichenfolge variabler Länge, schreibt Put zunächst einen 2-Byte-Deskriptor mit der Länge der Zeichenfolge und dann die Variable.If the variable being written is a variable-length string, Put writes a 2-byte descriptor containing the string length and then the variable. Die im Len -Abschnitt der Open -Anweisung festgelegte Datensatzlänge muss mindestens 2 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 2 bytes greater than the actual length of the string.

  • Ist die geschriebene Variable ein Variant mit einem numerischen Typ, schreibt Put zunächst 2 Bytes, die den VarType des Variant festlegen, und anschließend die eigentliche Variable.If the variable being written is a Variant of a numeric type, Put writes 2 bytes identifying the VarType of the Variant and then writes the variable. Bei einem Variant mit einem VarType 3 schreibt Put beispielsweise 6 Bytes: 2 Bytes legen Variant als VarType 3 (Long) fest und 4 Bytes enthalten die Daten vom Typ Long.For example, when writing a Variant of VarType 3, Put writes 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

    You can use the Put statement to write a Variantarray to disk, but you can't use Put to write a scalar Variant containing an array to disk.You can use the Put statement to write a Variantarray to disk, but you can't use Put to write a scalar Variant containing an array to disk. You also can't use Put to write objects to disk.You also can't use Put to write objects to disk.

  • Wenn die geschriebene Variable ein Wert vom Typ Variant mit einem VarType 8 (String) ist, schreibt Put 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 written is a Variant of VarType 8 (String), Put writes 2 bytes identifying the VarType, 2 bytes indicating the length of the string, and then writes 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 geschriebene Variable ein dynamisches Datenfeld ist, schreibt Put eine Beschreibung, deren Länge 2 plus 8 mal der Anzahl der Dimensionen entspricht, also 2 + 8 * NumberOfDimensions.If the variable being written is a dynamic array, Put writes 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 schreiben.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 write 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 geschriebene Variable ein Datenfeld fester Länge ist, schreibt Put nur die Daten.If the variable being written is a fixed-size array, Put writes only the data. Es wird keine Beschreibung auf den Datenträger geschrieben.No descriptor is written to disk.

  • Wenn die geschriebene Variable einen anderen Typ (weder Zeichenfolge variabler Länge noch Variant) hat, schreibt Put nur die Daten der Variablen.If the variable being written is any other type of variable (not a variable-length string or a Variant), Put writes 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 geschriebenen 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 written.

  • Put schreibt Elemente benutzerdefinierter Typen so, als ob jede einzeln geschrieben wurden, es sei denn, es gibt keinen Textabstand zwischen Elementen.Put writes elements of user-defined types as if each were written individually, except that there is no padding between elements. Auf dem Datenträger wird einem dynamischen Datenfeld eines benutzerdefinierten Typs (mit 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 Schreiben 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 write 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. Put schreibt alle Variablen nacheinander auf den Datenträger, das heißt ohne Zwischenräume zwischen den Datensätzen.Put writes all variables to disk contiguously; that is, with no padding between records.

  • Bei jedem Datenfeld, das kein Datenfeld eines benutzerdefinierten Typs ist, schreibt Put nur die Daten.For any array other than an array in a user-defined type, Put writes only the data. Es wird keine Beschreibung geschrieben.No descriptor is written.

  • Put schreibt Zeichenfolgen variabler Länge, die keine Elemente eines benutzerdefinierten Typs sind, ohne den 2 Bytes großen Längendeskriptor zu benötigen.Put writes variable-length strings that are not elements of user-defined types without the 2-byte length descriptor. Die Anzahl geschriebener Bytes entspricht der Anzahl von Zeichen in der Zeichenfolge.The number of bytes written equals the number of characters in the string. Die folgenden Anweisungen schreiben beispielsweise 10 Bytes in die Datei mit der Dateinummer 1:For example, the following statements write 10 bytes to file number 1:

      VarString$ = String$(10," ") 
      Put #1,,VarString$ 
    
    

BeispielExample

In diesem Beispiel wird die Put -Anweisung verwendet, um Daten in eine Datei zu schreiben.This example uses the Put statement to write data to a file. Es werden fünf Datensätze mit dem benutzerdefinierten Typ in die Datei geschrieben.Five records of the user-defined type are written to the file.

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 
 
Dim MyRecord As Record, RecordNumber ' Declare variables. 
' Open file for random access. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
For RecordNumber = 1 To 5 ' Loop 5 times. 
 MyRecord.ID = RecordNumber ' Define ID. 
 MyRecord.Name = "My Name" & RecordNumber ' Create a string. 
 Put #1, RecordNumber, MyRecord ' Write record to file. 
Next RecordNumber 
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.