WRITE (Datei)

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » W » WRITE (Datei)

Syntax: WRITE #f, Printausdruck
Typ: Anweisung
Kategorie: Datei

WRITE # funktioniert wie WRITE (Anweisung), leitet aber die Ausgabe in eine zuvor mit OPEN geöffnete Datei um; die Datei muss in einem sequentiellen Ausgabemodus (OUTPUT, APPEND) oder im Modus BINARY geöffnet sein. Der Vorteil gegenüber PRINT # ist, dass durch die spezielle Formatierung mehrere Datensätze pro Zeile geschrieben werden können; einen Datensatz kann man per INPUT # wieder auslesen. Der verwendbare Zeichensatz ist bei WRITE # jedoch eingeschränkt, zumindest, wenn die Datei im Anschluss wieder mit INPUT # gelesen werden soll; "Anführungszeichen" dürfen nicht verwendet werden.

Beispiel:

DIM Tmp AS STRING, nr AS INTEGER
nr = FREEFIlE

OPEN "Adressen.txt" FOR APPEND AS #nr

WRITE #nr, "Karl Mustermann", "12345", "Oberhausen", "Rottstraße 2"
WRITE #nr, "Eva Mustermann", "12345", "Oberhausen", "Rottstraße 2"
WRITE #nr, "Andrea Müller", "12346", "Unterhausen", "Wendeweg 17"
CLOSE #nr

OPEN "Adressen.txt" FOR INPUT AS #nr
DO
   FOR Satz As Integer = 1 TO 4
      INPUT #nr, tmp
      PRINT tmp; " ";
   NEXT
   PRINT
LOOP UNTIL EOF(nr)
SLEEP

So wie sich die Datensätze in einer Zeile schreiben lassen, können sie natürlich auch mit einer Zeile wieder eingelesen werden. Dazu dient dann aber die Anweisung LINE INPUT #, wie das folgende Beispiel zeigt:

Dim AS STRING tmp, dateiname="Adressen.txt"
Dim As Integer nr=FREEFILE
OPEN dateiname FOR Output AS #nr

WRITE #nr, "Karl Mustermann", "12345", "Oberhausen", "Rottstraße 2"
WRITE #nr, "Eva Mustermann", "12345", "Oberhausen", "Rottstraße 2"
WRITE #nr, "Andrea Müller", "12346", "Unterhausen", "Wendeweg 17"
CLOSE #nr

OPEN dateiname FOR INPUT AS #nr
DO
  Line Input #nr, tmp
  PRINT tmp
LOOP UNTIL EOF(nr)
Sleep

Bei dieser Variante müssen die einzelnen Strings bei Bedarf anhand der Trennzeichen wieder aufgeteilt werden.

Siehe auch:
OPEN (Anweisung), PRINT #, INPUT #, LINE INPUT #, ACCESS, Dateien (Files)