Freigeben über


FilePutObject-Funktion

Aktualisiert: November 2007

Schreibt Daten aus einer Variablen in eine Datei auf einem Datenträger.

Das My-Feature ermöglicht bei Datei-E/A-Vorgängen höhere Produktivität und Leistung als FilePutObject. Weitere Informationen finden Sie unter My.Computer.FileSystem-Objekt.

Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Object, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Double, _
      RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Overloads Public Sub FilePutObject( _
      FileNumber As Integer, _
      Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

Parameter

  • FileNumber
    Erforderlich. Beliebige gültige Dateinummer.

  • Value
    Erforderlich. Gültiger Variablenname, der auf den Datenträger geschriebene Daten enthält.

  • RecordNumber
    Optional. Datensatznummer (für Dateien im Random-Modus) oder Bytenummer (für Dateien im Binary-Modus), an der der Schreibvorgang beginnt.

  • ArrayIsDynamic
    Optional. Gilt nur beim Schreiben eines Arrays. Gibt an, ob das Array als dynamisches Array betrachtet werden soll und ob für die Zeichenfolge ein Arraydeskriptor mit Längenbeschreibung geschrieben wird.

  • StringIsFixedLength
    Optional. Gilt nur beim Schreiben einer Zeichenfolge. Gibt an, ob ein Deskriptor mit Längenbeschreibung für die Zeichenfolge geschrieben werden soll. Die Standardeinstellung ist False.

Hinweise

Die FilePutObject-Funktion wird anstelle von FilePut verwendet, um zur Kompilierungszeit Mehrdeutigkeiten zu vermeiden, wenn der Typ Object anstelle anderer Typen wie Integer, Long, Short usw. zurückgegeben wird.

Von FilePutObject werden Deskriptoren zur Beschreibung des Objekts geschrieben und eingelesen. Wenn Sie beabsichtigen, den Variant-Typ zu schreiben, ist FilePutObject erforderlich. Wenn Sie unsicher sind, ob Sie ein Objekt für den zweiten Parameter verwenden, sollten Sie stets FilePutObject und FileGetObject verwenden.

FilePutObject ist nur im Random-Modus und im Binary-Modus gültig.

Daten, die mit FilePutObject geschrieben worden sind, werden normalerweise mit FileGetObject-aus der Datei gelesen.

Der erste Datensatz oder das erste Byte einer Datei hat die Position 1, der zweite Datensatz bzw. das zweite Byte die Position 2 usw. Wenn Sie RecordNumber nicht angeben, schreibt FilePutObject den nächsten Datensatz bzw. das nächste Byte hinter der letzten FileGetObject-Funktion oder FilePutObject-Funktion (bzw. den Datensatz oder das Byte, auf den oder das die letzte Seek-Funktion zeigt).

Das StringIsFixedLength-Argument steuert, ob die Funktion Zeichenfolgen als Zeichenfolgen variabler oder fester Länge interpretiert. Der Längendeskriptor wird von FilePutObject nicht geschrieben, wenn das Argument den Wert True hat. Wenn Sie für FilePutObject das StringIsFixedLength = True-Argument verwenden, müssen Sie dasselbe Argument für FileGetObject verwenden und außerdem sicherstellen, dass die Zeichenfolge mit der erwarteten Länge initialisiert wird.

Random-Modus

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

  • Unterschreitet die Länge der geschriebenen Daten die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Länge, so beginnen mit FilePutObject geschriebene nachfolgende Datensätze dennoch stets an der durch die Datensatzlänge festgelegten Grenze. 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 Länge der Fülldaten nicht genau bestimmt werden kann, sollte die Datensatzlänge immer genau mit der Länge der geschriebenen Daten übereinstimmen. Wenn die Länge der geschriebenen Daten die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Länge überschreitet, wird eine Ausnahme ausgelöst.

  • Wenn es sich bei der geschriebenen Variablen um ein Objekt mit einem numerischen Typ handelt, werden von FilePutObject zwei Bytes, die den VarType des Objekts identifizieren, und anschließend die Variable geschrieben. Beispiel: Bei einem Objekt, das eine ganze Zahl enthält, schreibt FilePutObject sechs Bytes: zwei Bytes zur Identifizierung des Objekts als VarType(3) (Integer) und vier Bytes mit den Daten. Die im RecordLength-Parameter der FileOpen-Funktion angegebene Datensatzlänge muss also mindestens zwei Bytes größer sein als die tatsächlich zum Speichern der Variablen benötigte Anzahl von Bytes.

  • Wenn es sich bei der geschriebenen Variablen um ein Objekt mit einer Zeichenfolge handelt, schreibt FilePutObject einen 2-Byte-Deskriptor, der den VarType(8) des Objekts identifiziert, einen 2-Byte-Deskriptor mit der Längenangabe der Zeichenfolge und anschließend die Zeichenfolgendaten. Daher muss die im RecordLength-Parameter der FileOpen-Funktion festgelegte Datensatzlänge mindestens 4 Bytes größer sein als die tatsächliche Länge der Zeichenfolge. Wenn Sie eine Zeichenfolge ohne Deskriptor einlesen möchten, sollten Sie True an den StringIsFixedLength-Parameter übergeben. Die Zeichenfolge, in die Sie einlesen, sollte die richtige Länge haben.

  • Wenn es sich bei der geschriebenen Variablen um ein Array handelt, haben Sie die Möglichkeit, einen Deskriptor mit Größe und Dimensionen des Arrays zu schreiben. In Visual Basic 6.0 und früheren Versionen wurde ein Dateideskriptor nur für dynamische Arrays und nicht für Arrays mit fester Größe geschrieben. In Visual Basic wird standardmäßig kein Deskriptor geschrieben. Zum Schreiben des Deskriptors legen Sie den ArrayIsDynamic-Parameter auf True fest. Beim Schreiben des Arrays muss festgelegt werden, wie es gelesen wird. Für Arrays, die mit Deskriptor gelesen werden, muss der Deskriptor geschrieben werden. Der Deskriptor gibt den Rang des Arrays, die Größe und die Untergrenze jedes Ranges an. Seine Länge entspricht 2 plus 8 Mal die Anzahl der Dimensionen: (2 + 8 * NumberOfDimensions). Die durch die RecordLength-Klausel der FileOpen-Funktion angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die Daten des Arrays und den Arraydeskriptor zu schreiben.

Binary-Modus

Für Dateien, die im Binary-Modus geöffnet wurden, gelten die gleichen Regeln wie für Dateien im Random-Modus, jedoch mit den folgenden Ausnahmen:

  • Die RecordLength-Klausel in der FileOpen-Funktion ist wirkungslos. FilePutObject schreibt alle Variablen nacheinander auf den Datenträger, ohne Zwischenräume zwischen den Datensätzen.

Beispiel

In diesem Beispiel wird mit der FilePutObject-Funktion eine Zeichenfolge in eine Datei geschrieben.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Hinweise für Entwickler intelligenter Geräte

Diese Funktion wird nicht unterstützt.

Anforderungen

Namespace:Microsoft.VisualBasic

**Modul:**FileSystem

**Assembly:**Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Siehe auch

Referenz

FileGet-Funktion

FileOpen-Funktion

<unmanagedCodeEntityReference>Seek</unmanagedCodeEntityReference>-Funktion

FilePut-Funktion

My.Computer.FileSystem-Objekt

Weitere Ressourcen

Schreiben in Dateien in Visual Basic