Referenz - OPEN (Anweisung)
Syntax:
OPEN Datei FOR Dateimodus [ACCESS Zugriffsart] [LOCK Sperrart] _
[ENCODING "Format"] AS [#]Dateinummer [LEN = Recordlänge]
Typ: Anweisung
Kategorie: Dateien
Anmerkung zur Syntax: Unterstriche (_) am Zeilenende werden von FreeBASIC so interpretiert, als wäre die Zeile nicht unterbrochen; dies dient nur der besseren Übersichtlichkeit und hat letztendlich keine Auswirkungen auf die Programmausführung.
OPEN bereitet eine Datei auf einen Lese- und/oder Schreibzugriff vor und weist der Datei eine Dateinummer zu. OPEN kann auch zum Zugriff auf verschiedene Geräte verwendet werden; siehe die OPEN-Varianten am Ende dieses Eintrags.
- 'Datei' ist der Name einer Datei, auf die zugegriffen werden soll. Wird kein Pfad angegeben, geht FreeBASIC davon aus, dass sie sich im aktuellen Arbeitsverzeichnis befindet. Wenn die Datei nicht existiert, wird sie neu erstellt. (Ausnahme: INPUT (Dateimodus))
- 'Dateimodus' gibt an, in welchem Modus die Datei geöffnet werden soll. Möglich sind: Abhängig vom Dateimodus stehen verschiedene Dateioperationen zur Verfügung.
- '#Dateinummer' ist eine Nummer, über die später auf die Datei bzw. das Gerät zugegriffen wird. Diese Nummer darf nicht doppelt vergeben werden. Möglich sind die Nummern 1 bis 255. Die führende Raute ist optional, sollte aber verwendet werden, um sicherzustellen, dass eine Dateinummer bezeichnet wird.
- Mit 'ENCODING "Format"' kann bei sequentiellen Modi (INPUT, OUTPUT und APPEND) angegeben werden, wie die Datei kodiert werden soll. '"Format"' ist dabei einer der folgenden STRINGs, der angibt, wie die Datei kodiert sein soll:
- ASCII
- UTF-8
- UTF-16
- UTF-32
- 'Zugriffsart' gibt an, welche Zugriffe gestattet sind:
- READ: Nur Lesezugriff
- WRITE: Nur Schreibzugriff
- READ WRITE: Lese- und Schreibzugriff (Standard)
- 'Sperrart' gibt an, wie andere Prozesse auf die gerade geöffnete Datei zugreifen dürfen:
- READ: Andere Prozesse dürfen auf die Datei zugreifen, sie aber nicht lesen.
- WRITE: Andere Prozesse dürfen auf die Datei zugreifen, nicht aber in sie schreiben.
- READ WRITE: Andere Prozesse dürfen NICHT auf die Datei zugreifen.
- 'Recordlänge' legt fest, wie viele Bytes ein Record lang sein soll; siehe RANDOM
Achtung: LOCK arbeitet zur Zeit noch nicht wie vorgesehen. Siehe dazu auch den Diskussionsbeitrag im englischen Forum.
OPEN kann auch als Funktion eingesetzt werden. In diesem Fall müssen die übergebenen Parameter von Klammern umschlossen werden. Der Rückgabewert ist ggf. eine Fehlernummer. Wird 0 zurückgeliefert, konnte die Datei geöffnet werden.
Achtung: ENCODING kann zusammen mit UTF-codierten Dateien nur dann erfolgreich eingesetzt werden, wenn das Byte Order Mark (BOM) gesetzt ist und mit der angegebenen Codierung übereinstimmt. Ansonsten wird der Laufzeitfehler 2 (File not found) zurückgegeben.
Beispiel 1:
Öffnen der UTF-8-Datei "file.ext" im aktuellen Arbeitsverzeichnis und Ausgabe ihrer ersten Zeile auf dem Bildschirm
Dim Zeile As String, DNr As Integer = FREEFILE
OPEN "file.ext" FOR INPUT ENCODING "UTF-8" AS #DNr
LINE INPUT #DNr, Zeile
PRINT Zeile
CLOSE #DNr
SLEEP
Beispiel 2:
Dasselbe Beispiel wie oben, mit Einsatz von OPEN als Funktion:
Dim Zeile As String, DNr As Integer = FREEFILE
IF OPEN("file.ext" FOR INPUT ENCODING "UTF-8" AS #DNr) = 0 THEN
LINE INPUT #DNr, Zeile
PRINT Zeile
CLOSE #DNr
END IF
SLEEP
Zugriff auf Geräte
Neben Dateien lassen sich auch 'Geräte' öffnen. Geräte sind entweder von FreeBASIC verwaltete Speicherbereiche, in denen verschiedene, interne Informationen gespeichert werden, oder externe Anschlüsse wie die COM-Ports oder der LTP-Druckerport. Um mit OPEN ein Gerät zu öffnen, wird einfach einer dieser Bezeichner bei 'Gerät' angegeben.
Beispiel LPT: Dieses Gerät ermöglicht die Kommunikation mit dem LPT-Port und dadurch mit dem Drucker.
Weitere Informationen zum Thema finden sich bei den Spezialseiten zum Thema:
Unterschiede zu QB:
- Die Verwendung von MS-DOS Gerätenamen zum Öffnen eines Datenstroms zu Hardwaregeräten ("LPT:", "SCR:", etc.) wird nur in der Dialektform -lang qb unterstützt. Verwenden Sie ansonsten die neuen Schlüsselwörter, die oben im Abschnitt 'Zugriff auf Geräte' aufgelistet sind.
- OPEN kann in FreeBASIC als Funktion eingesetzt werden, die einen Fehlercode zurückgibt.
Plattformbedingte Unterschiede:
- Unter Linux muss der Dateiname 'case sensitive' erfolgen. Windows und DOS sind 'case insensitive'.
- Das Trennzeichen für den Dateipfad ist unter Linux der vorwärtsgerichtete Slash /. Windows verwendet den Backslash \, erlaubt aber auch den Slash. DOS verwendet den Backslash.
- Unter Windows ist die Dateinummer, die in einer DLL verwendet wird, nicht dieselbe wie eine identische Dateinummer, die vom Hauptprogramm verwendet wird. Dateinummern können nicht einfach zwischen DLL und Hauptprogramm ausgetauscht werden.
Unterschiede zu früheren Versionen von FreeBASIC:
Der Zugriff auf Geräte mittels OPEN COM usw. (s. o.) existiert seit FreeBASIC v0.15
Unterschiede unter den FB-Dialektformen:
Die Dialektform -lang qb unterstützt auch die alte GW-BASIC-Syntax
OPEN Dateimodus, [#]Dateinummer, Dateiname [, Länge]
mit dem Dateimodus "I" für Input, "O" für Output, "A" für Append, "R" für Random und "B" für Binary.
Siehe auch:
OPEN (Funktion), ENCODING, FREEFILE, LPRINT (Anweisung), Dateien (Files)
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|