Table Of ContentAnton Liebetrau
TopSpeed Modula-2 Units und Utilities
Die professionelle Toolbox
fUr den Softwareentwickler
mit Ober 200 Routinen
~-Software--------------
Numerik-Praktikum mit VISU
Das umfangreiche Softwarepaket
zur Visualisierung Numerischer Mathematik
fUr Mathematiker, Naturwissenschaftler, lngenieure
von Rolf Schroder
Vieweg GraphikManager: ARA
Ein kompaktes speicherresidentes Graphikprogramm
fUr die EGA-Graphikkarte
von Markus Weber
Wissensverarbeitung mit DEDUC
Ein Expertensystemshell mit Benutzeranleitung
sowie einem Lehrbuch zur Wissensverarbeitung,
Folgenabschatzung und Konsequenzenbewertung
von Hartmut Bessel, Bernd R. Hornung
und Karl-Friedrich MUIIer-ReiBmann
TopSpeed Modula-2 Units und Utilities
Die professionelle Toolbox fUr den Softwareentwickler
mit Uber 200 Routinen
von Anton Liebetrau
Vieweg DecisionManager
Ein Programmpaket zur Losung linearer Probleme
mit mehreren Zielfunktionen
von JUrgen Hansohm und Michael Hanle
Vieweg ProjectManager
Software zum modernen Projektmanagement
mit Benutzerhandbuch
von Erik Wischnewski
'------Vieweg
Anton Liebetrau
TopSpeed Modula-2
Units und Utilities
Die professionelle Toolbox
fiir den Softwareentwickler
mit iiber 200 Routinen
I I
Vleweg
Die Software-Routinen, beschrieben in diesem Buch, dürfen in eigenen Anwendungsprogrammen
verwendet werden. Der Programmierer darf eigene Programme, die diese Routinen enthalten, in
ausführbarer und kompilierter Form ohne Einschränkungen oder Verpflichtungen zu zusätzlichen
Lizenzgebühren weiterverkaufen; dasselbe gilt für die Wörterbuch-Datei SPELL.LEX, wenn diese
in eigenen Programmen verwendet wird. Die Quellcodes der einzelnen Module oder nur Teile
davon dürfen weder weitergegeben noch verkauft werden.
Die zu diesem Buch gehörenden Demo-Programme (SPELLCHK.MOD und MINIEDIT.MOD)
dürfen nicht weiterverkauft werden, jedoch können beliebige Teile der Demo-Programme in
eigenen Programmen verwendet werden. Diese neuen Anwendungen müssen sich jedoch bei
einem Verkauf so weitgehend von SPELLCHK.MOD und MINIEDIT.MOD unterscheiden, daß sie
im Sinne des Urheberrechtes als eigenständige Programme schützbar sind.
Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie
irgendeiner Art verbunden. Der Autor und der Verlag übernehmen infolgedessen keine Verantwor
tung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine
Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht.
Alle Rechte vorbehalten
© Springer Fachmedien Wiesbaden 1991
Ursprünglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig 1991
Softcoverreprint of the hardcover 1st edition 1991
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede
Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist
ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere
für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspei
cherung und Verarbeitung in elektronischen Systemen.
Umschlagsgestaltung: Ludwig Markgraf, Wiesbaden
ISBN 978-3-528-04796-2 ISBN 978-3-322-89472-4 (eBook)
DOI 10.1007/978-3-322-89472-4
v
Vorwort
Seit TopSpeed Modula-2 auf dem Software-Markt erhaltlich ist, hat die moder
ne Programmiersprache Modula-2 unter den Software-Entwicklem sichtlich an
Beliebtheit gewonnen. Dies la6t sich einerseits daran erkennen, da6 vermehrt
Bucher zu dieser Programmiersprache auf dem Markt erscheinen und anderer
seits in den einschlligigen Computer-Zeitschriften Quellcodes in TopSpeed Mo
dula-2 abgedruckt werden. Dazu beigetragen haben die komfortable Entwick
lungsumgebung von TopSpeed Modula-2, die ausgezeichneten Bibliotheks-Mo
dule (Proze6-Verwalter, Fenstertechnik ... ), der schnelle Compiler, der intelli
gente Linker, der kompakte und optimierte Programmcode und nicht zuletzt der
giinstige Preis des gesamten Entwicklungs-SystemS.
Dieses Buch eignet sich besonders fiir denjenigen Programmierer, der fiir seine
Software-Entwicklungen TopSpeed Modula-2 (Versionen l.xx und 2.xx) ver
wendet und trotz der rund 300 Prozeduren und Funktionen an Grenzen sto6t.
Die zehn in diesem Buch beschriebenen Module enthalten mehr als 200 neue
Routinen und erweitem TopSpeed Modula-2 betrlichtlich. Es enthlilt Routinen
zur Textverarbeitung und Maussteuerung, erleichtert das Verwalten von Mel
dungen (die mit dem komfortablen Meldungs-Editor MSGEDIT.EXE geschrie
ben werden) und Generieren von Menus. Besonders nennenswert erscheint mir
das Modul Spell; mit ibm wird es moglich, anhand bis zu zehn gleichzeitig ge
offneten Referenz-Worterbuchem (fiinf verschiedene Gro6en moglich) Ortho
graphie-Fehler in einem Text zu suchen. Es erkennt zusammengesetzte Haupt
worter (mit und ohne Fugen-s), unterscheidet zwischen Gro6- und .Kleinschrei
bung und ist au6erdem unglaublich schnell. Ein lihnliches Modul ist bis zum
heutigen Zeitpunkt meines Wissens nicht auf dem Software-Markt erhliltlich.
Dieses Buch ist in zwei Teile gegliedert. Der erste Teil beschreibt die Wir
kungsweise der einzelnen Routinen und verdeutlicht einzelne Aspekte durch
kurze Beispiel-Programme. Im zweiten Teil (Anhang) finden Sie neben nutzli
chen Tabellen und einer Ubersicht alter Module auch eine ausfiihrliche Be
schreibung der heiden umfangreichen Demo-Programme SPEUCHK.MOD und
MINIEDIT.MOD, die auf einer der beiliegenden Disketten enthalten sind.
Schlie6lich werden die vom Modul Spell verwendeten Algorithmen und Daten
strukturen ausfiihrlich erlliutert und mit Graphiken verdeutlicht.
Die einzelnen Module sind mit gro6ter Sorgfalt geschrieben und getestet
worden. Da sich aber Fehler nie ganz ausschlie6en lassen oder vielleicht einzel
ne Routinen nicht Ihren Vorstellungen entsprechen, bin ich fiir Hinweise und
Anregungen jederzeit dankbar.
Winterthur, November 1990 Anton l..iebetrau
VI
lnhaltsverzeichnis
Vorwort .................................................................................. V
Beschreibung der Module .. .. . .. . . .. . . . .. .. . . . .. . . .. .. .. .. . . .. . . . .. . .. . . . . . . . .. . .. . .. 1
Das Modul DOS .. .. .. .. . .. .. .. .. . .. .. . . .. .. . . .. . . .. .. . .. . . . .. . . .. . .. . . . .. . . .. . .. . . . 2
Das Modul Key . .. . .. .. . .. .. . .. . . .. .. . . .. .. . . .. .. .. .. . .. .. . .. . . . .. . .. . . . .. . . .. . .. . . . 34
Das Modul Menu . . .. .. .. . . . .. . . .. .. . . .. .. . . .. . . .. .. . .. .. . . .. . . .. . .. . . . .. . . .. . . .. . .. 38
Das Modul Message .. . .. .. . . .. . . .. .. . . .. .. . .. .. . .. .. . .. .. . .. . . .. . .. . . . .. . . . .. . .. . . 59
Das Modul Mouse ................................................................. 74
Das Modul Runtime Check . . .. . . ... . . .... . . ... . . ... . . ... . .. . . ... . .. . . ... . . . . . . .. . . 119
Das Modul Spell . .. . . . .. . . . . .. .. .. .. . . .. . . . . .. . . . . . . . .. . . . . . . . . . . . .. . .. . . . .. . . . . . . . 124
Das Modul Sys . .. .. .. . . . .. . . . . . . . . . .. . . . . .. . . .. . . . .. . . . .. . . .. . . . . . . .. . . . . . . .. . . .. . . 145
Das Modul Txt . . . . . .. .. . .. . . . .. . . . .. . . . . . .. . . . .. . .. . . . . .. . . . . . . . . . . .. . . .. . . .. . . . . . .. 173
Das Modul Workbox . .. . . . . .. . . . .. . . . .. .. . .. . . . . .. . .. . . . .. . . . . . . . .. . .. . . .. . . . . . . . . 200
Anhang ................................................................................... 225
A -ErHiuterungen zum Modul Spell .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . 226
B -Ubersicht der Module .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 236
C -Demo-Programme .. . . . .. . . .. .. . . .. . . . . .. . . .. . . . .. . . .. . . . .. . .. . . .. . . .. . .. . . . .. . 245
D -Inhalt der beiliegenden Disketten .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 253
E -Tastencodes . .. .. . .. .. . . .. . . .. . . .. .. . . . .. . . .. .. . . .. . . .. . . .. . . .. . .. . . .. . .. . . . . .. . 255
F -Graphikzeichen fiir Tabellen .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 258
G -ffiM-Zeichensatz . . . .. . . . . .. . . . .. . . . . .. . . . .. . . . .. . . .. . . .. . . .. . .. . . . . . . . . . . . . . . . 259
Literaturhinweise . .. .. . .. . . . .. . . . .. . . . .. . . . . .. . . . .. . . . .. . . .. . . .. . . .. . . .. .. . . .. . . .. . .. . . 261
Sachwortverzeichnis .. . . .. .. .. .. . . .. . . . .. .. . .. .. . . .. .. . .. . . . .. . .. . . .. . . . . . .. . .. . . .. . .. . 262
1
2
Das Modul DOS
Zweck
Dieses Modul stellt verschiedene Betriebssystem-Routinen zur Verfiigung (ln
terrupt-Vektoren vermdern, Datei-Handhabung, Abfrage von System-Zeit und
-Datum ... ).
Bemerkung
Folgende Prozeduren und Funktionen sind im Modul DOS definiert:
ChOir We chselt das aktuelle Verzeichnis
DiskFree Ermittelt den freien Speicherplatz einer Diskette oder
Festplatte
DiskSize Ermittelt den gesamten Speicherplatz einer Diskette
oder Festplatte
DosVersion Ermittelt die aktuelle DOS-Version
Error Liefert eine Fehler-Nummer.
FExpand Erweitert einen Dateinamen um Laufwerk und Such
pfad
FSearch Sucht in mehreren Verzeichnissen nach einem Dateina-
men
FSplit Zerlegt einen Dateinamen in die Komponenten "Such
pfad", "Name" und "Dateierweiterung"
GetCBreak Ermittelt, wann sich MS-DOS durch die Tastenkombi
nation Ctrl-Break unterbrechen lassen soll
Get Date Ermittelt das aktuelle System-Datum
GetDir Ermittelt das aktuelle Verzeichnis
GetEnv Sucht die Environment-Tabelle nach einem bestimmten
Eintrag ab
GetFAttr Ermittelt das Attribut einer Datei
GetFTimeDate Ermittelt Datum und Uhrzeit einer Datei
GetlntVec Ermittelt die Adresse einer Interrupt-Routine
GetProgName Ermittelt den aktuellen Programm-Namen (erst ab MS
DOS 3.0 moglich)
GetReturnCode Ermittelt den Return-Code eines Programmes, das mit
Execute gestartet worden ist
GetTime Ermittelt die aktuelle System-Zeit
GetVerify Ermittelt den aktuellen Stand des "Verify"-Schalters
PackTimeDate W andelt Uhrzeit und Datum in eine kompakte Form
um
SetCBreak Ermoglicht das Setzen eines Schalters, der festlegt,
wann sich das Betriebssystem MS-DOS durch die Ta
stenkombination Orl-Break unterbrechen lassen soli
SetDate Setzt das System-Datum neu
SetFAttr Setzt das Attribut einer Datei neu
SetFTimeDate Setzt die Uhrzeit und das Datum einer Datei neu
3 ChOir
SetlntVec Setzt die Adresse einer Interrupt-Routine neu
SetT ime Setzt die System-Zeit neu
SetVerify Verindert den aktuellen Stand des "Verify"-Schalters
UnpackTimeDate Wandelt die kompakte Form der Zeit und des Datums
in einen lesbaren Wert um
Folgende Konstanten sind fiir die heiden Prozeduren GetFAttr und SetFA ttr im
Modul DOS definiert:
CONST
reedonly • 0; (* Datei Item nur geleaen werden *)
hidden • 1; (* Versteckte Datei *)
syst.. • 2; (* Syst ..· Datei (MS·DOS·Kern) *)
volume • 3; (* Datentrager-Name *)
directory • 4; (* Verzeichnis *)
archive ,. 5; (* Archlvier~sbit (gewOhnllche Datei) *)
Folgende Datentypen sind im Modul DOS definiert:
TYP£
PathStr • ARRAY [0 •• 79] OF CHAR;
DirStr • ARRAY [0 •• 6n OF CHAR;
Na.eStr • ARRAY [0 •• 8] OF CHAR;
ExtStr =ARRAY [0 •• 4] OF CHAR;
Ti..Oate ,. RECORD
year ,MOnth,
day,hour,
Min,sec:CARDINAL
END;
Zwack
Wechselt das aktuelle Verzeichnis.
Struktur
ChDir(pfad:DirStr);
Bemerkung
Die Prozedur ChDir aktiviert das Verzeichnis (Directory) mit dem Namenpfad.
Der Datentyp DirStr ist im Modul DOS wie folgt definiert:
TYPE
Dl rStr•ARRAY [0 ••6 n OF CHAR;
Die Funktion DOS.Error liefert eine Fehlemummer, falls das Verzeichnis pfad
nicht existiert oder ungiiltig ist.