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 offenen Datenträgerdatei in eine Variable. Das My
-Feature bietet höhere Produktivität und Leistung bei 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
Erforderlich. Eine beliebige gültige Dateinummer.
- Value
- Object
Erforderlich. Der gültige Name einer Variablen, in die Daten gelesen werden.
- RecordNumber
- Int64
Dies ist optional. Datensatznummer (Dateien im Random
-Modus) oder Bytenummer (Dateien im Binary
-Modus), bei der der Lesevorgang beginnt.
Beispiele
Im folgenden Beispiel wird ein Datensatz in eine Testdatei gelesen und dann 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 anstelle von FileGet
verwendet, um Mehrdeutigkeiten zur Kompilierzeit zu vermeiden, wenn der Typ Object
anstelle eines anderen Typs zurückgegeben wird, z Integer
. B. , Long
, Short
usw.
Wenn Sie den Variant
Typ ausschreiben möchten, FileGetObject
ist erforderlich. Wenn Sie im Zweifelsfall ein -Objekt für den zweiten Parameter verwenden, wird immer empfohlen, und zu verwenden FilePutObject
FileGetObject
.
FileGetObject
ist nur im Random
- und Binary
-Modus gültig.
Datenlesevorgänge mit FileGetObject
werden normalerweise mit FilePutObject
geschrieben.
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 weglassenRecordNumber
, FileGetObject
liest der Datensatz oder das Byte nach der letzten funktion oder FilePutObject
der letzten FileGetObject
Funktion (oder wird von der letzten Seek
Funktion darauf verwiesen).
Zufälliger Modus
Für dateien, die im Random
Modus geöffnet werden, gelten die folgenden Regeln:
Wenn die Länge der zu lesenden Daten kleiner als die in der
RecordLength
-Klausel derFileOpen
-Funktion angegebene Länge ist,FileGetObject
werden nachfolgende Datensätze an Datensatzlängengrenzen gelesen. Der Leerraum zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes ist mit dem vorhandenen Inhalt des Dateipuffers gepolstert. Da die Menge der Auffüllungsdaten nicht genau bestimmt werden kann, empfiehlt es sich, die Datensatzlänge mit der Länge der zu lesenden Daten übereinzustimmen.Wenn die Variable, in die eingelesen 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 gehen. Daher muss die von der -Klausel derRecordLength
FileOpen
-Funktion angegebene Datensatzlänge mindestens zwei Bytes größer als die tatsächliche Länge der Zeichenfolge sein. 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 an den Parameter übergebenTrue
, und die Zeichenfolge, in dieStringIsFixedLength
Sie einlesen, sollte die richtige Länge aufweisen.Wenn die Variable, in die gelesen wird, ein Array ist, muss die vom
RecordLength
Parameter in derFileOpen
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 Untergrenze für jeden Rang an. Seine Länge entspricht 2 plus 8 Mal der Anzahl der Dimensionen: 2 + 8 * NumberOfDimensions.Die folgende Arraydeklaration erfordert beispielsweise 218 Bytes, 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, als ob sie einzeln gelesen würden, mit der Ausnahme, dass es keine Auffüllung zwischen Elementen gibt. Auf dem Datenträger wird einem dynamischen Array in einem benutzerdefinierten Typ (geschrieben mitFilePutObject
) ein Deskriptor vorangestellt, dessen Länge 2 plus 8 mal der Anzahl der Dimensionen entspricht: 2 + 8 * NumberOfDimensions. Die durch dieRecordLength
-Klausel in derFileOpen
-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 ihrer Deskriptoren. 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 derFileOpen
-Funktion hat keine Auswirkung.FileGetObject
liest alle Variablen vom Datenträger zusammenhängend, d. h. ohne Auffüllung zwischen Datensätzen.Bei einem anderen Array als einem Array in einer Struktur
FileGetObject
werden nur die Daten gelesen. Es wird kein Deskriptor gelesen.
FileGetObject
liest Zeichenfolgen mit variabler Länge, die keine Elemente von Strukturen sind, ohne den Deskriptor für die Länge von zwei Byte zu erwarten. Die Anzahl der gelesenen Bytes entspricht der Anzahl von Zeichen, die bereits in der Zeichenfolge enthalten sind.
Wichtig
Treffen Sie beim Lesen aus Dateien keine Entscheidungen über den Inhalt einer Datei basierend auf der Dateinamenerweiterung. Beispielsweise ist eine Datei mit dem Namen Form1.vb möglicherweise keine Visual Basic-Quelldatei.