|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
FileSystem.FileGet-Methode (Int32, Int32%, Int64)
Namespace: Microsoft.VisualBasic
Assembly: Microsoft.VisualBasic (in Microsoft.VisualBasic.dll)
Parameter
- FileNumber
- Typ: System.Int32
Erforderlich. Eine beliebige gültige Dateinummer.
- Value
- Typ: System.Int32
Erforderlich. Der Name einer gültigen Variablen, in die Daten eingelesen werden.
- RecordNumber
- Typ: System.Int64
Optional. Datensatznummer (Dateien im Random-Modus) oder Bytenummer (Dateien im Binary-Modus), an der der Lesevorgang beginnt.
| Ausnahme | Bedingung |
|---|---|
| ArgumentException | |
| IOException | |
| IOException |
Sicherheitshinweis |
|---|
Random-Modus
Unterschreitet die Länge der zu lesenden Daten die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Länge, so liest FileGet nachfolgende Datensätze trotzdem immer an der durch die Datensatzlänge festgelegten Grenze. Der Platz zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem bestehenden Inhalt des Dateipuffers aufgefüllt. Da die Länge der Fülldaten nicht mit Sicherheit bestimmt werden kann, sollten die Datensatzlänge und die Länge der eingelesenen Daten immer übereinstimmen. Wenn die Variable, in die eingelesen wird, eine Zeichenfolge ist, liest FileGet standardmäßig einen 2-Byte-Deskriptor, der die Länge der Zeichenfolge enthält, und dann die Daten, die die Variable aufnimmt. Daher muss die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Datensatzlänge mindestens 2 Bytes größer sein als die tatsächliche Länge der Zeichenfolge. In Visual Basic 6.0 und früheren Versionen werden Zeichenfolgen mit fester Länge unterstützt, für die beim Einlesen in eine Datei kein Längendeskriptor geschrieben wird. Wenn Sie eine Zeichenfolge ohne Deskriptor einlesen möchten, sollten Sie True an den StringIsFixedLength-Parameter übergeben, und die Zeichenfolge, die Sie einlesen, sollte die richtige Länge aufweisen. Wenn es sich bei der eingelesenen Variablen um ein Array handelt, haben Sie die Möglichkeit, einen Deskriptor mit Größe und Dimensionen des Arrays einzulesen. Zum Schreiben des Deskriptors legen Sie für den ArrayIsDynamic-Parameter True fest. Beim Lesen des Array müssen Sie sich danach richten, wie das Array geschrieben wurde. Wenn es mit dem Deskriptor geschrieben wurde, müssen Sie den Deskriptor lesen. Wenn der Deskriptor nicht verwendet wird, richtet sich der Umfang des zu lesenden Inhalts nach der Größe und den Grenzen des Array, die an FileGet übergeben wurden. Der Deskriptor gibt den Rang des Arrays, die Größe und die Untergrenze jedes Ranges an. Seine Länge entspricht 2 plus 8 Mal die Anzahl der Dimensionen: (2 + 8 * NumberOfDimensions). Die durch den RecordLength-Parameter der FileOpen-Funktion angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die Daten des Arrays und den Arraydeskriptor zu schreiben. Die folgende Arraydeklaration erfordert z. B. 218 Bytes, wenn das Array auf einen 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) 200 Bytes für die Daten: (5 * 10 * 4).
Wenn die eingelesene Variable einen anderen Typ, d. h. weder Zeichenfolge variabler Länge, noch Object, hat, liest FileGet nur die eigentlichen Variablendaten. Die in der RecordLength-Klausel der FileOpen-Funktion angegebene Datensatzlänge muss also mindestens so groß sein wie die Länge der einzulesenden Daten. FileGet liest die Elemente von Strukturen so, als ob sie einzeln gelesen würden, jedoch ohne Fülldaten zwischen den Elementen. Auf dem Datenträger wird einem dynamischen Array eines benutzerdefinierten Typs (das mit FilePut geschrieben wurde) ein Deskriptor vorangestellt, dessen Länge sich aus der Summe von 2 plus die mit 8 multiplizierte Anzahl von Dimensionen ergibt: (2 + 8 * NumberOfDimensions). Die durch die RecordLength-Klausel in der FileOpen-Funktion angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die einzelnen Elemente zu lesen. Dies schließt alle Arrays und ihre Deskriptoren ein. Zeichenfolgenfelder in den Strukturen können mit dem VBFixedString-Attribut versehen werden, das die Größe der Zeichenfolge beim Schreiben auf den Datenträger angibt.
Binary-Modus
Die RecordLength-Klausel in der FileOpen-Funktion hat keine Auswirkungen. FileGet liest alle Variablen nacheinander vom Datenträger, d. h. ohne Zwischenräume zwischen Datensätzen aufzufüllen. Bei jedem Array, das kein Array in einer Struktur ist, liest FileGet nur die Daten. Es wird kein Deskriptor gelesen. FileGet liest Zeichenfolgen variabler Länge, die keine Elemente von Strukturen sind, ohne den Längendeskriptor von 2 Bytes zu erwarten. Daher entspricht die Anzahl gelesener Bytes der Zeichenanzahl in der Zeichenfolge.
SicherheitshinweisDas Lesen einer Datei mit der FileGet-Funktion erfordert Read-Zugriffsrechte aus der FileIOPermissionAccess-Enumeration.
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.