 |
| Top-Quellcodes |
|
|
| Rubriken |
|
|
| Kontakt |
|
|
| Suchen |
|
|
|
|
|
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
|
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
|
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
|
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.
|
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.
|
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.
Beispielprojekt ( 2,18 KB )
|
|