The following article was printed in issue 4 of the magazine „CHIP SPECIAL".
|
FILE OF BYTE
zugegriffen wurde.
Wurde dabei nur successive in ein solches File geschrieben, so konnte man ja noch den Umweg über TEXT
nehmen.
Wenn aber direkter Zugriff lesend und schreibend eingesetzt wurde, so blieb bislang nichts als Resignation.
FILE OF BYTE
keine Probleme bereitet.
Eine solche Datei ist zu allen anderen Dateien kompatibel und erlaubt den Zugriff auf jedes einzelne Byte.
(Die folgenden angesprochenen Programme, mit Ausnahme des File-Editors, liegen nicht vor.) |
Welch interessante Möglichkeiten der Datentyp
FILE OF BYTE bietet, kann man schon an den kleinen Programmen dieses Hefts erkennen, die damit arbeiten:
FILEKONV zum Filetransfer CP/M - MS-DOS, DB-TURBO zur automatischen Konvertierung von DBASE-Dateien ins Turbo-Format und schließlich der von vielen Lesern sehnlichst gewünschte File-Editor.
|
BYTEFILE
heißt das Zauberwort und auch das Bibliotheksmodul, das auch auf CP/M-Turbo den bislang schmerzlich vermißten Datentyp implementiert.
Die Arbeit mit dem Modul gestaltet sich wahrscheinlich noch einfacher, als Sie denken:
an alle Standardbezeichner, die Sie bisher in Verbindung mit Dateien gebraucht haben, wird ausnahmslos das Wort 'ByteFile
' angehängt.
Das ist auch schon alles.
BYTEFILE.BIB
stehen Ihnen also der Typ ByteFile
und beispielsweise folgende Routinen zur Verfügung:
ReadByteFile(FileVar, ByteVar)
oder ResetByteFile(FileVar)
.
Dabei muß selbstverständlich FileVar
von Typ ByteFile
und ByteVar
von Typ Byte
sein.
Seek
, FilePos
und FileSize
wurden nicht implementiert, da sie nur den Zugriff auf maximal 32 KByte-Dateien erlauben.
Stattdessen wurden gleich LongSeek
, LongFilePos
und LongFileSize
aufgenommen, die reelle Argumente übernehmen bzw. reelle Ergebnisse liefern.
Damit können nun auch Dateien im Gigabyte-Bereich bearbeitet werden.
Während bei FILE OF BYTE
unter MS-DOS der Puffer normalerweise 512 Bytes groß ist, kann er bei ByteFile beliebig in 128-Byte-Schritten eingestellt werden.
In der abgedruckten Version wurde ein 1024-Byte-Puffer gewählt, was sich als guter Kompromiß herausgestellt hat.
I+
und I-
werden während der Übersetzung von Turbo-Pascal gesetzt, nicht während der Laufzeit.
Sie wirken nur auf die textlich nachfolgenden IO-Operationen.
Deshalb macht es keinen Sinn, die IO-Fehlerüberwachung durch I-
abzuschalten und dann eine Prozedur (oder Funktion) aufzurufen, die IO-Operationen durchführt (und bei der die Fehlerüberwachung nicht abgeschaltet war).
In einem solchen Fall würde der Turbo-interne Fehlermelder auf jeden Fall zuschlagen.
BYTEFILE.BIB
eine eigene Variable IOResultByteFile
verwaltet, die eventuell auftretende Fehler anzeigt.
Allerdings ist sie nur nach den Grundoperationen ResetByteFile
, RewriteByteFile
und CloseByteFile
definiert.
Da bei diesen Operationen die Turbo-Fehlerüberwachung abgeschaltet wird, sollte man nach ihrem Einsatz immer auf IOResultByteFile
entsprechend reagiert werden.
Scanned by
Werner Cirsovius
December 2002
© CHIP Verlag