·  Start ·  Programme ·  Codes ·  Tipps ·  ActiveX ·  Tutorials · 




Für Anfänger und auch Fortgeschrittene soll dieses Tutorial zeigen, wie Text aus Textfeldern, Listen- und Kombinationsfeldern in beliebige Dateien geschrieben und aus diesen wieder gelesen wird. Behandelt werden die Grundlagen der Ein- und Ausgabe und der Umgang mit (String-)Variablen.

Übersicht:

Allgemeines
Textdateien öffnen
Textdateien lesen
Textdateien schreiben
Binärdateien
Zusammenfassung
 

 
 Allgemeines

Visual Basic eignet sich sehr gut für Stringbehandlungen und bietet mehrere Möglichkeiten, auf Dateien zuzugreifen. In diesem Tutorial sollen Textdateien, typisierte Dateien und Binärdateien behandelt werden.

In der folgenden Tabelle finden Sie eine Übersicht der Dateifunktionen:

FreeFile - liefert eine freie Dateinummer für die Open-Anweisung
Open - öffnet eine Datei
Print - für die Ausgabe in eine sequentielle Datei
Write - schreibt in eine sequentielle Datei
Put - schreibt in Random- oder Binärdateien

Input - liest eine Textdatei
Line Input - liest eine Zeile aus einer Textdatei
Get - liest aus Random- oder Binärdateien

Seek - setzt die Position des Dateizeigers
EOF - End Of File (=True, wenn sich der Dateizeiger am Ende der Datei befindet)
LOC - gibt die aktuelle Position des Dateizeigers zurück
LOF - ermittelt die Größe einer (geöffneten) Datei in Bytes
Close - schließt die geöffnete Datei

Weitere Funktionen, die ebenfalls von Bedeutung für den Umgang mit Dateien sind:

ChDrive - wechselt das Laufwerk
CurDir - gibt das aktuelle Verzeichnis zurück (zB C:)
ChDir - wechselt das Verzeichnis
MkDir - legt ein Verzeichnis (Ordner) an
RmDir - löscht ein Verzeichnis
Kill - löscht eine Datei
FileCopy - kopiert eine Datei
Name - für die Umbenennung von Dateien
FileDateTime - gibt Zeit und Datum der letzten Änderung an
FileLen - gibt die Dateigröße einer ungeöffneten Datei in Bytes zurück
GetAttr - Gibt die Dateiattribute zurück (normal, versteckt, etc)
SetAttr - Setzt Dateiattribute


Fehlerbehandlung:
Es kann vorkommen, dass eine Datei, die Sie öffnen und deren Inhalt in eine Textbox einlesen wollen, bereits geöffnet ist; beispielsweise von einem anderen Programm oder von Windows selbst. Fügen Sie daher immer eine Fehlerbehandlung in Ihre Routinen ein
 

 Textdateien öffnen

Eine Textdatei ist grundsätzlich so aufgebaut, dass jede Zeile maximal 255 Zeichen lang ist und ausserdem jede Zeile mit den ASCII-Zeichen 13 und 10 abgeschlossen ist.
Chr(13) und Chr(10) bedeuten Wagenrücklauf und Zeilenvorschub und können in Visual Basic auch so umgesetzt werden:
vbCrLf (CarriageReturn, Linefeed)

Sie können eine Datei auf verschiedenen Arten öffnen:
 
  • Input (Lesen)
  • Output (Schreiben) - vorhandener Inhalt wird überschrieben
  • Append (Anhängen von Text)

Das Öffnen zum Lesen einer Datei geschieht auf folgende Weise:

Dim Datei As String
Dim FF As Integer
Datei = "C:\test.txt"
FF = FreeFile

Open Datei For Input As #FF
Ebenso verfahren Sie für das Schreiben in eine Datei:
Open Datei For Output As #FF
' oder
Open Datei For Append As #FF
Natürlich müssen die geöffneten Dateien auch wieder geschlossen werden:
Open Datei For Input As #FF
'.....Code
Close #FF
 

 Textdateien lesen

Voraussetzung für das Lesen von Daten aus einer Datei ist, dass sie geöffnet wurde.

Mit Open Datei For Input As #FF haben wir im vorigen Abschnitt eine Datei geöffnet. Nun gibt es mehrere Möglichkeiten, die Daten für Ihr Programm aufzubereiten:

 
  • Zeilenweises Einlesen (Line Input)
  • Zeichenweises Einlesen (mit LOF)
  • Komplette Datei einlesen (Input)


Zeilenweises Einlesen eignet sich in erster Linie für Listenfelder oder Kombinationsfelder (List- und Combobox).

Ein Beispiel soll dies verdeutlichen:

Dim Datei As String
Dim zeichen As String
Dim xF As Integer
Datei = "C:\config.sys"
xF = FreeFile

Open Datei For Input As #xF
  While Not EOF(xF)
    Line Input #xF, zeichen
    List1.AddItem zeichen
  Wend
Close #xF
Erklärung:
In einer Schleife (While / Wend) wird bis zum Dateiende (EOF) jede Zeile in die Variable "zeichen" eingelesen und anschließend der Liste (List1) hinzugefügt. Wenn Sie Line Input verwenden, werden die ASCII-Zeichen 13 und 10 (vbCrLf) automatisch entfernt.


Zeichenweises Einlesen

Statt der Schleife verwenden Sie:
zeichen = Input(5, xF)
Text1.Text = zeichen
Erklärung:
Mit Input ( Anzahl der Zeichen, Dateinummer) lesen Sie die ersten 5 Zeichen der Datei in die Variable "zeichen" ein.


Einlesen des gesamten Inhalts
Open Datei For Input As #xF
  zeichen = Input(LOF(xF), #xF)
  Text1.Text = zeichen
Close #xF
 

 Textdateien schreiben

Wenn Sie Text aus einer Variablen, einer Textbox, Listbox oder Combobox in eine Datei schreiben wollen, bieten sich gleich beim Öffnen der Zieldatei zwei Varianten an:
Open For Output oder Open For Append.
Im zweiten Fall wird der Text an eventuell schon bestehenden Text angehängt.

Beispiel für eine Textbox:
Open "C:\Test.txt" For Output As #1
  Print #1, Text1.Text
Close #1
Beispiel für ein Listenfeld:
Dim i As Integer
Open "C:\Test.txt" For Output As #1
  For i = 0 To List1.Listcount - 1
    Print #1, List1.List(i)
  Next i
Close #1
Die Einträge (Items) eines Listenfeldes werden in einer Schleife durchlaufen in die Datei geschrieben.


 

 Binärdateien

Unter Binärdateien versteht man eigentlich nicht ein bestimmtes Dateiformat, sondern die Zugriffsart auf eine Datei. Das heißt, dass Sie auch auf eine Textdatei im Binärmodus zugreifen können.

Als Beispiel muss wieder einmal die config.sys herhalten:
Dim zeichen As String

Open Datei For Binary As #1
  zeichen = Space(LOF(1))
  Get #1, , zeichen
  Text1.Text = zeichen
Close #1

Das Ergebnis ist gleich wie unter Textdateien lesen beschrieben, allerdings ist es über den Zugriff Binary etwas schneller.


Zugriffe:

Es gibt speziell für Binärdateien und/oder Randomdateien verschiedene Zugriffsarten:

Shared - Andere Prozesse haben Schreib- und Leserechte
Lock Read - Andere Prozesse können die Datei nicht lesen
Lock Write - Andere Prozesse können nicht in die Datei schreiben
Lock Read Write - Lesen und schreiben für andere Prozesse gesperrt.

Open Datei For Binary Access Write As #1
Die Datei wird ausschließlich für Schreibvorgänge geöffnet.
Open Datei For Binary Access Read Lock Read As #1
Die Datei wird nur für Lesezugriff geöffnet, für andere Anwendungen und Prozesse ist die Datei gesperrt.

Weitere Hinweise:
Es ist wichtig, zu verstehen, was die einzelnen Zugriffsarten bedeuten; Angenommen, das Programm Nr. 1 öffnet eine Datei mit dem Modus "Lock Write". Programm Nr. 2 versucht nun die gleiche Datei zum Schreiben zu öffnen. In Programm 2 tritt sofort der Laufzeitfehler Nummer 70 (Zugriff verweigert) auf. Deshalb ist auch eine Fehlerbehandlung sehr wichtig. Vor allem dann, wenn Sie auf Systemdateien zugreifen, da diese bereits von einem anderen Programm geöffnet sein könnten.
Für eigene Textdateien, die lediglich für Einstellungen und dergleichen dienen, dürfte eine Fehlerbehandlung nicht allzu wichtig sein.


 

 Zusammenfassung

Dieses Tutorial sollte Ihnen die Grundlagen der Ein- und Ausgabe vermitteln. Das Thema könnte natürlich noch beliebig erweitert werden.  Weitere Dateizugriffsmöglichkeiten wären Typisierte Dateien und INI-Dateien.

Download  Beispielprojekt  ( 2,18 KB )
Aktualisiert: 12.02.2008, 20:49 Uhr Copyright © 2001 - 2010 by ST-software Navigation zurück  |  Navigation vorwärts  |  Zum Seitenanfang     
Ihre IP: 38.107.191.81 ·  Seite erstellt in: 0.313 Sekunden ·  Dateigröße:  12396 Bytes