FileSystem.FileGetObject(Int32, Object, Int64) Methode

Definition

Liest Daten aus einer geöffneten Datenträgerdatei in eine Variable. Das My Feature bietet Ihnen eine bessere Produktivität und Leistung in Datei-E/A-Vorgängen als FileGetObject. Weitere Informationen finden Sie unter FileSystem.

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

Parameter

FileNumber
Int32

Required. Eine beliebige gültige Dateinummer.

Value
Object

Required. Name einer gültigen Variablen, in die die Daten eingelesen werden.

RecordNumber
Int64

Dies ist optional. Datensatznummer ( Modusdateien) oder Bytenummer (RandomBinary Modusdateien), an denen der Lesevorgang beginnt.

Beispiele

Im folgenden Beispiel wird ein Datensatz in eine Testdatei gelesen und anschließend abgerufen.

Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)

Hinweise

Die FileGetObject Funktion wird verwendet, anstatt FileGet Mehrdeutigkeiten zur Kompilierungszeit zu vermeiden, wenn der Typ Object anstelle eines anderen Typs zurückgegeben wird, z Integer. B. , Long, usw Short.

Wenn Sie den Variant Typ schreiben möchten, FileGetObject ist erforderlich. Wenn Sie im Zweifelsfall ein Objekt für den zweiten Parameter verwenden, wird immer empfohlen, dass Sie verwenden FilePutObject und FileGetObject.

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

Daten, die FileGetObject gelesen werden, werden in der Regel mit FilePutObjectgeschrieben.

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 den Datensatz oder das Byte nach der letzten FileGetObject oder Funktion auslassen RecordNumberFileGetObject (oder von der letzten Seek Funktion darauf FilePutObject verweisen).

Zufälliger Modus

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

  • Wenn die Länge der zu lesenden Daten kleiner als die in der RecordLength Klausel der FileOpen Funktion angegebene Länge ist, FileGetObject werden nachfolgende Datensätze auf Datensatzlängengrenzen gelesen. 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 Abstandsdaten nicht präzise bestimmt werden kann, empfiehlt es sich, die Datensatzlänge mit der Länge der zu lesenden Daten übereinzustimmen.

  • Wenn die variable, in die gelesen wird, eine Zeichenfolge ist, liest standardmäßig FileGetObject ein Zwei-Byte-Deskriptor, der die Zeichenfolgenlänge enthält, und liest dann die Daten, die in die Variable gelangen. Daher muss die durch die RecordLength Klausel der FileOpen Funktion angegebene Datensatzlänge mindestens zwei Bytes größer sein als die tatsächliche Länge der Zeichenfolge. Visual Basic 6.0 und frühere Versionen unterstützen Zeichenfolgen mit fester Länge und beim Lesen in eine Datei wird der Längendeskriptor nicht geschrieben. Wenn Sie eine Zeichenfolge ohne den Deskriptor lesen möchten, sollten Sie den StringIsFixedLength Parameter übergebenTrue, und die von Ihnen gelesene Zeichenfolge sollte die richtige Länge aufweisen.

  • Wenn die variable, in die gelesen wird, ein Array ist, muss die durch den RecordLength Parameter 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. Die Länge entspricht 2 plus 8 Mal der Anzahl der Dimensionen: 2 + 8 * NumberOfDimensions.

    Die folgende Arraydeklaration erfordert beispielsweise 218 Byte, wenn das Array auf den Datenträger geschrieben wird:

    Dim MyArray(4, 9) As Integer
    

    Die 218 Bytes werden wie folgt verteilt: 18 Bytes für den Deskriptor (2 + 8 * 2) und 100 Bytes für die Daten (5 * 10 * 4).

  • FileGetObject liest Elemente von Strukturen so aus, als würden sie einzeln gelesen werden, außer dass zwischen Elementen kein Abstand vorhanden ist. Auf dem Datenträger wird einem dynamischen Array in einem benutzerdefinierten Typ (geschrieben mit FilePutObject) ein Deskriptor vorangestellt, dessen Länge 2 plus 8 Mal die Anzahl der Dimensionen entspricht: 2 + 8 * NumberOfDimensions. Die durch die Klausel in der RecordLengthFileOpen Funktion angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die zum Lesen der einzelnen Elemente erforderlich sind, einschließlich aller Arrays und deren Beschreibungen. Die VBFixedStringAttribute Klasse kann auf Zeichenfolgenfelder in den Strukturen angewendet werden, um die Größe der Zeichenfolge anzugeben, wenn sie auf den Datenträger geschrieben wird.

Binärmodus

Für Dateien, die Random im Binary Modus geöffnet werden, gelten alle Regeln mit den folgenden Ausnahmen:

  • Die RecordLength Klausel in der FileOpen Funktion hat keine Auswirkung. FileGetObject liest alle Variablen fortlaufend aus dem Datenträger, d. h. ohne Abstand zwischen Datensätzen.

  • Bei einem anderen Array als einem Array in einer Struktur FileGetObject werden nur die Daten gelesen. Es wird keine Beschreibung gelesen.

FileGetObject liest Zeichenfolgen mit variabler Länge, die keine Elemente von Strukturen sind, ohne dass der Zwei-Byte-Längendeskriptor erwartet wird. Die Anzahl gelesener Bytes entspricht der Anzahl von Zeichen in der Zeichenfolge.

Important

Treffen Sie beim Lesen aus Dateien keine Entscheidungen über den Inhalt einer Datei basierend auf der Dateinamenerweiterung. Eine Datei mit dem Namen Form1.vb kann z. B. keine Visual Basic Quelldatei sein.

Gilt für:

Weitere Informationen