********************************************************************************
*
*   \         (c) Thomas Antoni, 3.11.2002 - 5.11.2002
*    \ /\           Mailto:thomas@antonis.de
*    ( )            Downloaded from www.antonis.de --- www.qbasic.de   
*  .( o ).
*                        ----==== Hottest QBasic Stuff on Earth !!! ====----
*
********************************************************************************

********************************************************************************
*
* .----------------.
* | ENGLISH  INFO  |  (Deutsche Info: Siehe unten)
* '----------------'
*
* FileHand - 4 demo programs for handling files in QBasic by Thomas Antoni
*              E-Mail  : thomas@antonis.de
*              Website : www.qbasic.de -- Hottest QBasic Stuff on Earth
*
********************************************************************************
This program collection contains little examples for each of the 4 file-access
methods supported by QBasic:

- File-Seq.bas - Sequential File
- File-Typ.bas - Random File with TYPE Buffer
- File-FLD.bas - Random File with FIELD Buffer
- File-Bin.bas - Binary File

Rating: ++    (in a range from + to +++)

********************************************************************************
*
* .---------------.
* | DEUTSCHE INFO |
* '---------------'
*
* FileHand - 4 Demoprogramme fr die Dateibearbeitung mit QBasic
*              von     : Thomas Antoni
*              E-Mail  : thomas@antonis.de
*              Webseite: www.qbasic.de -- Hottest QBasic Stuff on Earth
*
********************************************************************************

Diese kleine Programmsammlung enthlt jeweils ein kleines Beispiel fr die
Dateibarbeitung mit den folgenden bei QBasic zur Verfgung stehenden Datei-
Zugriffsarten:

- File-Seq.bas - Sequentielle Datei
- File-Typ.bas - Direktzugriffs-Datei mit TYPE-Puffer  ("Random"-Datei)
- File-FLD.bas - Direktzugriffs-Datei mit FIELD-Puffer ("Random"-Datei)
- File-Bin.bas - Binre Datei


File-Seq.bas = Bearbeitung einer Sequentiellen Datei
---------------------------------------------------------------------------------
Sequentielle Dateien sind bequem zu hantieren und leicht zu verstehen. Daher 
sind sie bei Programmier-Einsteigern sehr beliebt.

In Sequentiellen Dateien werden beliebige Daten unmittelbar hintereinander 
gespeichert, hnlich wie Songs auf einem Tonband. Das gedachte Tonbandgert hat 
jedoch leider kein Zhlwerk, so dass wir uns die Position eines bestimmmten 
Songs nicht merken knnen. Daher mssen wir das Band von vorn beginnend 
"sequentiell" absuchen, und uns Song fr Song vortasten, bis wir auf den 
gewnschten Song zugreifen knnen.

Ein direkter Zugriff auf einen Song in der Bandmitte ist nicht mglich. Die 
einzelnen "Datenstze" einer Sequentiellen Datei entsprechen den Songs auf dem 
Tonband. Das Ende eines Datensatzes wird durch einen Zeilenvorschub (Zeichen 
<CR> und <LF> ) markiert. Ein Datensatz kann noch in so genannte "Teilfelder 
unterteilt sein, die durch Kommas voneinander getrennt sind.

Der Hauptvorteil von Sequentiellen Dateien besteht im einfachen Handling und
darin, dass die Datenstze unterschiedlich lang sein knnen.

In einer Sequentiellen Datei werden alle Daten, auch rein numerische Gren, 
grundstzlich als Text abgelegt, sind also mit jedem Texteditor lesbar.


File-Typ.bas = Bearbeitung einer Direktzugriffs-Datei mit TYPE-Puffer
---------------------------------------------------------------------------------
Direktzugriffs-Dateien bestehen grundstzlich aus gleich langen Datenstzen. Das 
ermoeglicht einen direkten Zugriff auf einen beliebigen Datensatz innerhalb der 
Datei, ohne dass alle vorhergehenden Datensaetze erst gelesen werden muessen. 
Dies ist der Vorteil gegenber den Sequentiellen Dateien.

Als Zwischenpuffer im Hauptspeicher wird fr die Datenstze normalerweise ein 
anwenderdefiniertes Verbundfeld mit TYPE...END TYPE verwendet.

Die bei Sequentiellen Dateien bliche Datensatz-Endekennung, die aus einem 
Zeilenvorschub ( <CR> >LF> )  besteht, entfllt bei Direktzugriffs-Dateien,
weil sie dort berflssig ist. Die Adresse eines Datensatzes lsst sich ja
leicht aus seiner Nummer und der (festen) Datensatzlnge durch Multiplikation
ermitteln. Darum muss sich der Anwender natrlich nicht kmmern, weil der
QBasic-Interpreter ihm das abnimmt.

Numerische Werte werden platzsparend in binrer Form und nicht wie bei einer
Sequentiellen Datei als Strings abgelegt.

Der Nachteil gegenber Sequentiellen Dateien besteht darin, dass alle Datenstze 
gleich lang sein mssen. In vielen Fllen (vor allem bei Texten) muss 
Speicherplatz verschenkt werden, da die Datensatzlnge sich nach den grten 
vorkommenden Einzeldaten richten muss. Weiterhin ist die Direktzuriffs-Datei 
wegen der TYPE...END TYPE Konstruktion fr Einsteiger etwas schwer zu verstehen.

               
File-Fls.bas = Bearbeitung einer Direktzugriffs-Datei mit FIELD-Puffer
---------------------------------------------------------------------------------
Die Zugriffstechniken bei dieser Dateiart sind nahezu identisch mit den 
vorgenannten Dateien mit TYPE-Puffer. Jedoch erfolgt das Schreiben/Lesen nicht 
ber einen anwenderspezifischen Datentyp (mehrdimensionales Feld), sondern 
ber einen speziellen FIELD-Puffer, der nur einen Datensatz aufnehmen kann.

Der FIELD-Puffer enthlt auschlielich Strings und kann in beliebig viele 
Teilfelder unterteilt sein. Numerische Werte mssen in 'Pseudostrings' umge- 
wandelt werden.

Die enorme Flexibilitt dieser Dateiart liegt darin, da die Lngen und Namen 
der Fieldelemente im FIELD-Puffer noch zur Laufzeit beliebig manipuliert 
werden knnen, so da ein Anlegen und Bearbeiten beliebiger Datenbankstrukturen 
mglich ist, die zum Zeitpunkt der Programmentwickung noch gar nicht bekannt 
sein mssen.

Fr Einsteiger ist die Direktzugriffs-Datei mit FIELD-Puffer noch schwerer zu 
verstehen wie diejenige mit TYPE-Puffer. In den meisten QBasic-Bchern wird sie 
gar nicht behandelt.

Wenn Ihr Programm nur eine einzige Datenbank bearbeiten soll, z.B. eine 
Adresskartei, dann machen Sie sich das Leben mit einer "Direktzugriffs- Datei 
mit TYPE-Puffer" mit Sicherheit leichter.

                
File-Bin.bas = Bearbeitung einer Binren Datei
---------------------------------------------------------------------------------
Binrdateien gestatten einen unmittelbaren Zugriff auf alle in der Datei 
enthaltenen Bytes unter Angabe der Byte-Position. Eine Datei wird dabei als 
Folge einzelner Bytes angesehen, wobei jedes Byte gezielt manipuliert werden 
kann. Damit knnten Sie sogar eine Programm schreiben, das seinen eigenen Code
verndert oder den der QBasic-Entwicklungsumgebung "QBASIC.EXE". Aber vorsichtig!
Das kann ins Auge gehen!


Weitere Informationen zur Dateibearbeitung in QBasic
-----------------------------------------------------
Eine ausfhrliche Behandlung der 4 Datei-Zugriffsmethoden finden Sie in meinem 
"QBasic-Kochbuch", das auf www.qbasic,de zum Download bereitsteht. Damit 
versuche ich das Defizit auszugleichen, dass die meisten QBasic-Bcher die 
Dateibearbeitung nur uerst lcken- und fehlerhaft behandeln.
               
Bewertung: +++   (in einer Skala von + bis +++)




