FileSystem.FilePutObject(Int32, Object, Int64) Methode

Definition

Schreibt Daten aus einer Variablen in eine Datenträgerdatei. Das My Feature bietet Ihnen eine bessere Produktivität und Leistung in 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

Required. Eine beliebige gültige Dateinummer.

Value
Object

Required. Gültiger Variablenname, der Daten enthält, die auf den Datenträger geschrieben wurden.

RecordNumber
Int64

Dies ist optional. Datensatznummer ( Modusdateien) oder Bytenummer (RandomBinaryModusdateien), bei denen das Schreiben 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 wird verwendet, anstatt FilePut Mehrdeutigkeiten zur Kompilierungszeit zu vermeiden, wenn der Typ Object anstelle eines anderen Typs übergeben wird, z Integer. B. , Long, Shortusw.

FilePutObject schreibt und liest Deskriptoren, die das Objekt beschreiben. Wenn Sie den Variant Typ schreiben möchten, FilePutObject ist erforderlich. Wenn Sie im Zweifelsfall ein Objekt für den zweiten Parameter verwenden, empfehlen wir, dass Sie immer verwenden FilePutObject und FileGetObject.

FilePutObject ist nur im Random Und Binary Modus gültig.

Mit einer Datei geschriebene FilePutObject Daten werden in der Regel mithilfe einer FileGetObjectDatei 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 auslassen RecordNumber, FilePutObject schreibt der nächste Datensatz oder 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 lautet True. Bei Verwendung StringIsFixedLength = True mit FilePutObject, müssen Sie dasselbe mit FileGetObject, 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 wurden, gelten die folgenden Regeln:

  • Wenn die Länge der geschriebenen Daten kleiner als die in der RecordLength Klausel der FileOpen Funktion angegebene Länge ist, FilePutObject werden nachfolgende Datensätze in Datensatzlängenbegrenzungen geschrieben. 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 Abstandsdaten nicht genau bestimmt werden kann, empfiehlt es sich im Allgemeinen, die Länge des Datensatzes mit der Länge der zu schreibenden Daten übereinzustimmen. Wenn die Länge der geschriebenen Daten größer als die in der RecordLength Klausel der FileOpen Funktion angegebene Länge ist, wird eine Ausnahme ausgelöst.

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

  • Wenn die geschriebene Variable ein Objekt ist, das eine Zeichenfolge enthält, schreibt ein Zwei-Byte-Deskriptor, FilePutObject der das VarType(8) Objekt identifiziert, ein Zwei-Byte-Deskriptor, der die Länge der Zeichenfolge angibt, und schreibt dann die Zeichenfolgendaten. Die durch den RecordLength Parameter in der FileOpen Funktion angegebene Datensatzlänge muss mindestens vier Bytes größer sein als die tatsächliche Länge der Zeichenfolge. Wenn Sie eine Zeichenfolge ohne den Deskriptor einfügen möchten, sollten Sie den StringIsFixedLength Parameter übergebenTrue, und die von Ihnen gelesene Zeichenfolge sollte die richtige Länge aufweisen.

  • Wenn es sich bei der zu schreibenden Variable um ein Array handelt, muss die durch die Klausel in der RecordLengthFileOpen 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. Die Länge entspricht 2 plus 8 Mal der Anzahl der Dimensionen: (2 + 8 * NumberOfDimensions).

Binärmodus

Für Dateien, die Random im Binary Modus geöffnet werden, gelten alle Modusregeln, mit Ausnahme:

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

Gilt für:

Weitere Informationen