FileGet-Funktion

Aktualisiert: November 2007

Liest Daten aus einer geöffneten Datenträgerdatei in eine Variable ein.

Das My-Feature bietet Ihnen eine höhere Produktivität und Leistung bei Datei-E/A-Vorgängen als FileGet. Weitere Informationen hierzu finden Sie unter My.Computer.FileSystem-Objekt.

Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Object, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Short, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Integer, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Single, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Double, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Decimal, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Byte, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Boolean, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As Date, _
   Optional RecordNumber As Integer = -1 _
)
' -or-
Public Overloads Sub FileGet( _
   ByVal FileNumber As Integer, _
   ByRef Value As System.Array, _
   Optional RecordNumber As Integer = -1, _
   Optional ArrayIsDynamic As Boolean = False _
)
' -or-
Public Overloads Sub FileGet(
   ByVal FileNumber As Integer, _
   ByRef Value As String, _
   Optional RecordNumber As Integer = -1, _
   Optional StringIsFixedLength As Boolean = False _
)

Parameter

  • FileNumber
    Erforderlich. Beliebige gültige Dateinummer.

  • Value
    Erforderlich. Name einer gültigen Variablen, in die die Daten eingelesen werden.

  • RecordNumber
    Optional. Datensatznummer (Dateien im Random-Modus) oder Bytenummer (Dateien im Binary-Modus), an der der Lesevorgang beginnt.

  • ArrayIsDynamic
    Optional. Gilt nur beim Schreiben eines Arrays. Gibt an, ob das Array als dynamisches Array behandelt werden soll und ob ein Arraydeskriptor notwendig ist, der Größe und Begrenzungen des Arrays beschreibt.

  • StringIsFixedLength
    Optional. Gilt nur beim Schreiben einer Zeichenfolge. Gibt an, ob ein 2-Byte-Deskriptor für die Zeichenfolge geschrieben werden soll, die die Länge beschreibt. Die Standardeinstellung ist False.

Ausnahmen

Ausnahmetyp

Fehlernummer

Bedingung

ArgumentException

63

RecordNumber < 1 und nicht gleich -1.

IOException

52

FileNumber ist nicht vorhanden.

IOException

54

Dateimodus ist ungültig.

Beachten Sie die Spalte "Fehlernummer", wenn Sie Visual Basic 6.0-Anwendungen aktualisieren, die eine unstrukturierte Fehlerbehandlung verwenden. (Sie können die Fehlernummer mit der Number-Eigenschaft (Err-Objekt) vergleichen.) Wenn möglich, sollten Sie jedoch erwägen, eine solche Fehlerkontrolle durch Übersicht über die strukturierte Ausnahmebehandlung für Visual Basic zu ersetzen.

Hinweise

FileGet ist nur im Random-Modus und im Binary-Modus gültig.

Daten, die mit FileGet gelesen werden, werden normalerweise mit FilePut in eine Datei geschrieben.

Der erste Datensatz oder das erste Byte einer Datei hat die Position 1, der zweite Datensatz bzw. das zweite Byte die Position 2 usw. Wenn Sie RecordNumber nicht angeben, wird der Datensatz bzw. das Byte gelesen, der bzw. das auf die letzte FileGet-Funktion oderFilePut-Funktion folgt (oder auf den bzw. das die letzte Seek-Funktion zeigt).

Sicherheitshinweis:

Treffen Sie beim Lesen von Daten aus Dateien nicht auf der Grundlage der Dateierweiterung Entscheidungen über den Dateiinhalt. So ist es zum Beispiel möglich, dass eine Datei mit dem Namen Form1.vb keine Visual Basic-Quelldatei ist.

Random-Modus

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

  • 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 von der RecordLength-Klausel der FileOpen-Funktion angegebene Datensatzlänge mindestens zwei Bytes größer als die tatsächliche Länge der Zeichenfolge sein. 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, in 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 den ArrayIsDynamic-Parameter auf 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 jeder Dimension an. Seine Länge entspricht 2 plus 8 Mal die Anzahl von 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.

Binärer Modus

Für Dateien, die im Binary-Modus geöffnet wurden, gelten bis auf wenige Ausnahmen die meisten der Random-Modusregeln. Die folgenden Regeln für Dateien, die im Binary-Modus geöffnet werden, unterscheiden sich von den Regeln für den Random -Modus:

  • Die RecordLength-Klausel in der FileOpen-Funktion hat keine Auswirkung. FileGet liest alle Variablen zusammenhängend 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.

    Sicherheitshinweis:

    Das Lesen einer Datei mit der FileGet-Funktion erfordert Read-Zugriffsrechte aus der FileIOPermissionAccess-Enumeration.

Hinweise für Entwickler intelligenter Geräte

Diese Funktion wird nicht unterstützt.

Anforderungen

Namespace:Microsoft.VisualBasic

**Modul:**FileSystem

**Assembly:**Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Siehe auch

Referenz

FileOpen-Funktion

FilePut-Funktion

<unmanagedCodeEntityReference>Seek</unmanagedCodeEntityReference>-Funktion

FileGetObject-Funktion

Weitere Ressourcen

Lesen aus Dateien in Visual Basic

Schreiben in Dateien in Visual Basic