FileSystem.FilePutObject(Int32, Object, Int64) Methode

Definition

Schreibt Daten aus einer Variablen in eine Datei auf einem Datenträger. Das My-Feature bietet höhere Produktivität und Leistung bei Datei-E/A-Vorgängen als FilePutObject. Weitere Informationen finden Sie unter FileSystem.

public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

Parameter

FileNumber
Int32

Erforderlich. Eine beliebige gültige Dateinummer.

Value
Object

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

RecordNumber
Int64

Dies ist optional. Datensatznummer (Dateien im Random-Modus) oder Bytenummer (Dateien im Binary-Modus), an der der Schreibvorgang beginnt.

Beispiele

In diesem Beispiel wird die FilePutObject -Funktion verwendet, um eine Zeichenfolge in eine Datei zu schreiben.

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

Hinweise

Die FilePutObject Funktion dient anstelle von FilePut um Mehrdeutigkeiten zum Zeitpunkt der Kompilierung zu vermeiden, wenn Typ Object wird z. B. anstelle eines anderen Typs übergeben Integer, Long, Shortusw.

FilePutObject schreibt und liest Deskriptoren, die das Objekt beschreiben. Wenn Sie beabsichtigen, den Variant Typ auszuschreiben, FilePutObject ist erforderlich. Wenn Sie im Zweifelsfall ein -Objekt für den zweiten Parameter verwenden, wird empfohlen, immer und FileGetObjectzu verwendenFilePutObject.

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

Mit FilePutObject geschriebene Daten werden in der Regel mit FileGetObject aus einer Datei gelesen.

Der erste Datensatz oder das erste Byte in einer Datei befindet sich an Position 1, der zweite Datensatz oder das zweite Byte an Position 2 usw. Wenn Sie weglassen RecordNumber, FilePutObject schreibt der nächste Datensatz oder das nächste Byte nach der letzten FileGetObject - oder FilePutObject -Funktion (oder dem Datensatz oder Byte, auf den die letzte Seek Funktion verweist).

Das StringIsFixedLength Argument steuert, ob die Funktion Zeichenfolgen als variable oder feste Länge interpretiert. FilePutObject schreibt den Längendeskriptor nicht, wenn das Argument ist True. Wenn Sie mit FilePutObjectverwendenTrueStringIsFixedLength = , müssen Sie dies auch mit FileGetObjecttun, und Sie müssen auch sicherstellen, dass die Zeichenfolge auf die erwartete Länge initialisiert wird.

Zufälliger Modus

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 RecordLength -Klausel der FileOpen -Funktion angegebene Länge ist, FilePutObject schreibt nachfolgende Datensätze auf Datensatzlängengrenzen. Der Abstand zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem vorhandenen Inhalt des Dateipuffers aufgefüllt. Da die Menge der Auffüllungsdaten nicht genau bestimmt werden kann, empfiehlt es sich im Allgemeinen, die Datensatzlänge mit der Länge der zu schreibenden Daten übereinzustimmen. Wenn die Länge der zu schreibenden Daten größer als die in der RecordLength -Klausel der FileOpen -Funktion angegebene Länge ist, wird eine Ausnahme ausgelöst.

  • Wenn die zu schreibende Variable ein Objekt ist, das einen numerischen Typ enthält, schreibt zwei Bytes, FilePutObject die das VarType des Objekts identifizieren, und schreibt dann die Variable. Wenn Sie beispielsweise ein Objekt schreiben, das eine ganze Zahl enthält, FilePutObject werden sechs Bytes geschrieben: zwei Bytes, die das Objekt als VarType(3) (Integer) identifizieren, und vier Bytes, die die Daten enthalten. Die vom Parameter in der RecordLengthFileOpen Funktion angegebene Datensatzlänge muss mindestens zwei Bytes größer sein als die tatsächliche Anzahl von Bytes, die zum Speichern der Variablen erforderlich sind.

  • Wenn die zu schreibende Variable ein Objekt ist, das eine Zeichenfolge enthält, FilePutObject schreibt einen Zwei-Byte-Deskriptor, der die VarType(8) des -Objekts identifiziert, einen Zwei-Byte-Deskriptor, der die Länge der Zeichenfolge angibt, und schreibt dann die Zeichenfolgendaten. Die vom Parameter in der RecordLengthFileOpen Funktion angegebene Datensatzlänge muss mindestens vier Bytes größer als die tatsächliche Länge der Zeichenfolge sein. Wenn Sie eine Zeichenfolge ohne den Deskriptor einfügen möchten, sollten Sie an den Parameter übergeben True , und die Zeichenfolge, in die StringIsFixedLength Sie lesen, sollte die richtige Länge aufweisen.

  • Wenn die zu schreibende Variable ein Array ist, muss die von der RecordLength -Klausel in der FileOpen Funktion angegebene Datensatzlänge größer oder gleich der Summe aller Bytes sein, die zum Schreiben der Arraydaten und des Arraydeskriptors erforderlich sind. Der Deskriptor gibt den Rang des Arrays, die Größe und die unteren Grenzen für jeden Rang an. Seine Länge entspricht 2 plus dem 8-fachen der Anzahl der Dimensionen: (2 + 8 * NumberOfDimensions).

Binärer Modus

Für Dateien, die Random im Binary Modus geöffnet werden, gelten alle Modusregeln, außer:

  • Die RecordLength -Klausel in der FileOpen Funktion hat keine Auswirkung. FilePutObject schreibt alle Variablen zusammenhängend auf den Datenträger, d. h. ohne Zwischenspeicherung zwischen Datensätzen.

Gilt für:

Weitere Informationen