Freigeben über


Put-Anweisung

Schreibt Daten aus einer Variablen in eine Datenträgerdatei.

Syntax

Put [ # ] filenumber, [ recnumber ], varname

Die Syntax der Put-Anweisung besteht aus den 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 Schreibvorgang beginnt.
varname Erforderlich. Der Name der Variablen, die Daten enthält, die auf den Datenträger geschrieben werden sollen.

Hinweise

Mit Put geschriebene Daten werden in der Regel mit Get aus einer Datei gelesen.

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 nach der letzten Seek-Funktion geschrieben. Sie müssen Kommas als Trennzeichen angeben, zum Beispiel:

Put #4,,FileBuffer 

Für Dateien, die im Random -Modus geöffnet werden, gelten die folgenden Regeln:

  • Wenn die Länge der zu schreibenden Daten kleiner als die in der Len-Klausel der Open-Anweisung angegebene Länge ist, schreibt Put nachfolgende Datensätze auf 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 geschriebenen Daten übereinstimmen. Wenn die Länge der geschriebenen Daten die im Len -Abschnitt der Open -Anweisung festgelegte Länge überschreitet, tritt ein Fehler auf.

  • 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. 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.

  • 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. 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. 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.

    Hinweis

    Verwenden Sie die Put-Anweisung, um ein Variant-Array auf den Datenträger zu schreiben, aber Sie können Put nicht verwenden, um einen skalaren Variant-Wert zu schreiben, der ein Array auf den Datenträger enthält. 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. 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 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. 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. 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 geschriebene Variable ein Datenfeld fester Länge ist, schreibt Put nur die Daten. Es wird keine Beschreibung auf den Datenträger geschrieben.

  • Wenn die geschriebene Variable einen anderen Typ (weder Zeichenfolge variabler Länge noch Variant) hat, schreibt Put 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 geschriebenen Daten.

  • Put schreibt Elemente von benutzerdefinierten Typen so, als ob jede einzeln geschrieben würde, mit der Ausnahme, dass es keinen Abstand zwischen Elementen gibt. 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. 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.

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. Put schreibt alle Variablen nacheinander auf den Datenträger, das heißt ohne Zwischenräume zwischen den Datensätzen.

  • Bei jedem Datenfeld, das kein Datenfeld eines benutzerdefinierten Typs ist, schreibt Put nur die Daten. Es wird keine Beschreibung geschrieben.

  • Put schreibt Zeichenfolgen variabler Länge, die keine Elemente eines benutzerdefinierten Typs sind, ohne den 2 Bytes großen Längendeskriptor zu benötigen. Die Anzahl geschriebener Bytes entspricht der Anzahl von Zeichen in der Zeichenfolge. Die folgenden Anweisungen schreiben beispielsweise 10 Bytes in die Datei mit der Dateinummer 1:

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

Beispiel

In diesem Beispiel wird die Put -Anweisung verwendet, um Daten in eine Datei zu schreiben. Es werden fünf Datensätze mit dem benutzerdefinierten Typ in die Datei geschrieben.

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 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.