FileSystem.FileGetObject(Int32, Object, Int64) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
RecordLengthKlausel derFileOpenFunktion angegebene Länge ist,FileGetObjectwerden 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
FileGetObjectein Zwei-Byte-Deskriptor, der die Zeichenfolgenlänge enthält, und liest dann die Daten, die in die Variable gelangen. Daher muss die durch dieRecordLengthKlausel derFileOpenFunktion 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 denStringIsFixedLengthParameter ü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
RecordLengthParameter in derFileOpenFunktion 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 IntegerDie 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).
FileGetObjectliest 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 mitFilePutObject) ein Deskriptor vorangestellt, dessen Länge 2 plus 8 Mal die Anzahl der Dimensionen entspricht: 2 + 8 * NumberOfDimensions. Die durch die Klausel in derRecordLengthFileOpenFunktion 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
RecordLengthKlausel in derFileOpenFunktion hat keine Auswirkung.FileGetObjectliest alle Variablen fortlaufend aus dem Datenträger, d. h. ohne Abstand zwischen Datensätzen.Bei einem anderen Array als einem Array in einer Struktur
FileGetObjectwerden 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.