KLib ist ein umfangreiches Paket von mehreren Libraries. Diese Libraries sind auf mehrere Einzeldateien aufgeteilt, so daß es teilweise auch möglich ist, nur einzelne Komponenten von KLib zu verwenden. Allerdings basieren die Libraries teilweise auch auf einander. Der prinzipbedingte Nachteil von Libraries - es werden auch Funktionen mit "an Bord" geholt, die nicht benötigt werden - läßt sich leider auch bei KLib nicht vermeiden. Allerdings besteht dieses Problem nur im Editor und Interpreter, denn der Compiler ist häufig in der Lage, nicht benötigte Funktionen zu entfernen. Dadurch hält sich der Ballast, der im endgültigen Programm "mitgeschleppt" wird, in Grenzen. Für die Fälle, in denen der Compiler nicht in der Lage ist, überflüssiges zu entfernen, wird es irgendwann einmal ein Tool als Plugin für KLed geben.
An dieser Stelle sollen die einzelnen Libraries etwas näher vorgestellt werden.
Die Datei KLAES.LIB enthält die Libraries KLaes, KLdia, KLfen und KLav.
Mit den Funktionen aus KLfen werden Fenster verwaltet, vom Öffnen und Schließen über das Verschieben und Verändern der Größe, der Verwaltung der Scrollbars bis hin zum Iconifizieren. Für reine Textfenster läuft die Verwaltung inclusive der Zeichensatzgröße und des verwendeten Fonts fast vollständig automatisch. Im Programm muß nur noch der passende Text zur Verfügung gestellt werden.
KLfen bildet darüber hinaus die Grundlage für die KLib-Dialogverwaltung in Fenstern, die in der Library KLdia zusammengefaßt ist. KLdia enthält Funktionen zum Öffnen von Dialogen in Fenstern. Dialoge können zentriert oder auch an beliebigen festen Positionen oder orientiert an der Mausposition geöffnet werden. Da die Dialoge in Fenstern ablaufen kann die Original-AES-Routine zur Verwaltung von Dialogen (Form_Do) in KLib nicht verwendet werden. Die Auswertung der Ereignisse in Dialogen wird deshalb von KLdia in die allgemeine AES-Ereignisverwaltung (Evnt_Multi) eingebettet. Dabei fällt fast nebenbei die Möglichkeit der Tastatursteuerung der Dialoge ab (die das Original-Form_Do nicht bietet!).
Außerdem basieren die KLib-Fensteralerts, die wesentlich flexibler sind als die Original-Alert-Routine (Form_Alert), auf den KLdia-Funktionen. KLib-Fensteralerts bieten mehr Platz für den Hinweistext als das Original, liegen (programm-modal) in Fenstern und sind somit verschiebbar, bieten die Unterstützung von Tastatur-Kürzeln und können zeitgesteuert automatisch bedient werden. In Verbindung mit der SYS-Datei können die Alerts außerdem sehr umfangreich individuell von AnwenderInnen konfiguriert werden. Die Verwendung ist nicht schwerer, als der Aufruf eines System-Alerts mit dem Basic-Befehl FORM_ALERT.
KLdia und KLfen sind für ihre Funktionalität auf einige Grundfunktionen angewiesen, die die Library KLaes bietet. In dieser Library sind die einfachen Grundfunktionen z.B. zum Auslesen und Setzen von Objekteigenschaften versammelt. Außerdem enthält KLaes die gesamte Event-Verwaltung und die Verwaltung des Menüs (Verbindung von Tastatur-Shortcuts mit Menüpunkten).
In der Datei KLAES.LIB befindet sich außerdem die Library KLav, die einige Funktionen des AV/VA-Protokolls zur Verfügung stellt. Eng damit zusammen hängen die Funktionen zur Unterstützung des Drag&Drop-Verfahrens und OLGA sowie die Funktionen zur Unterstützung von Online-Hilfe über den ST-Guide und BubbleGEM.
In der Datei KLPOP.LIB befindet sich die gleichnamige Library. Sie stellt Funktionen zur Verfügung, die in KLib-Dialogen Popup-Menüs ermöglichen. Außerdem enthält sie die Möglichkeit, Kontext-Menüs (z.B. mit einem Klick auf die rechte Maustaste) zur Verfügung zu stellen.
Neu seit der KLib-Version 1.02 ist KLDREG.LIB. Dabei handelt es sich um eine Library, die es ermöglicht, in Dialogen Registerkarten zu verwalten. Nachdem der Dialog im Resource-Construction-Set zusammengebastelt worden ist, genügen ein paar Zeilen Code und diese Library, um in dem Dialog verschiedene Registerkarten mit Reitern etc. zu verwalten.
Neuere Betriebssystem-Versionen (z.B. MagiC und N.AES) stellen einige Funktionen zur Verfügung, die das alte TOS noch nicht enthält. Diese Funktionen werden auch von KLib - falls vorhanden - vielfach genutzt. Da die mit dem Interpreter ausgelieferte Version der GEM-Library schon ziemlich alt ist, enthält sie diese Möglichkeiten noch nicht. Um sie trotzdem nutzen zu können ist eine Erweiterung der GEM.LIB notwendig. Die Datei EXTGEM.LIB enthält die entsprechenden Funktionen (z.B. Appl_Getinfo, Appl_Search, Wind_Backdrop, Wind_Iconify, die Grundfunktionen für OLGA und WDIALOG).
Da die VDI-Funktionen in der Original-GEM.LIB kein Geräte-Handle übergeben bekommen, sind sie nur zur Ausgabe auf den Bildschirm geeignet. KLib stellt deshalb in der Datei KLEXTVDI.LIB Erweiterungen der wichtigsten VDI-Funktionen zur Verfügung, die aufgrund der Übergabe eines Handles auf jedes Gerät ausgeben können.
KLib kann mit jeder beliebigen GEM.LIB verwendet werden. Zum Lieferumfang gehört aber auch eine von mir speziell optimierte und fehlerbereinigte Version in der Datei GEMKL.LIB.
In der Datei KLSYS.LIB befinden sich einige Libraries, die grundlegende Betriebssystem-Aufrufe und Informationen zur Verfügung stellen.
In der Library KLdos befinden sich alle wesentlichen GEMDOS-Funktionen wie z.B. zum Öffnen, Lesen, Schreiben und Löschen von Dateien, Anlegen und Löschen von Ordnern, Kopieren von Dateien, Lesen und Setzen von Dateiattributen und Datum, Ermittlung der vorhandenen Laufwerke und Standardpfade etc. Im Gegensatz zu den teilweise zum Befehlsumfang von Omikron.Basic gehörenden Befehlen brechen diese Funktionen das Programm nicht bei einem Fehler ab.
Mit der Library KLdir ist es möglich, den Inhalt von Ordnern und Laufwerken zu ermitteln.
Die Library KLsys bietet die Auswertung einiger Systemfunktionen wie z.B. die Ermittlung von Cookies, Versionsabfragen für TOS, MagiC und GEMDOS, Lesen und Schreiben von Strings ins RAM usw.
Die Library KLdat liefert einige Funktionen zum Verwalten von Text-Dateien (Zugriff über einen Zeilenindex, Suchfunktion etc.).
Außerdem enthält KLSYS.LIB die Libraries Klstr zum Manipulieren von Strings und KLtim zur Bearbeitung von Datums- und Uhrzeitwerten (Umwandlung vom GEMDOS-Format in einen formatierten String und umgekehrt, Ermittlung des Wochentages usw.).
In der Datei KLMEM.LIB befindet sich eine gleichnamige Library, die eine vollständige RAM-Verwaltung zur Verfügung stellt. Die Nutzung einer eigenen RAM- Verwaltung hat verschiedene Vorteile, z.B. die volle Kontrolle darüber, wieviel RAM das eigene Programm verbraucht und Nutzung des TT-RAMs (ist mit dem Basic-Befehl MEMORY nicht möglich). Einzelne RAM-Blöcke können mit KLmem auch verkleinert oder vergrößert werden. Letzteres natürlich nur, wenn noch ein ausreichend großer RAM-Bereich frei ist.
Die Datei KLSRT.LIB enthält einige Funktionen zum Sortieren von Textzeilen oder Dateilisten.
Die Datei KLTIO.LIB enthält die Libraries KLtio, KLeto und KLvt52. Diese Libraries bieten Funktionen, die im Wesentlichen für TOS-Programme benötigt werden, wie z.B. Ein- und Ausgabe- Umlenkung, eine konfigurierbare Eingabefunktionen (vergleichbar mit dem Basic-Befehl INPUT USING, aber flexibler und über das GEMDOS).
Zum Erstellen eines neuen Programmes bietet KLib zwei Rumpf-Programme in den Dateien STARTGEM.BAS und STARTTOS.BAS. Diese Rumpf-Programme binden die KLib-Libraries ein. Nach dem Zuladen der entsprechenden LIB-Dateien und der Resource-Datei (auch dafür bietet KLib einen Rumpf) gibt ist das Programm bereits lauffähig und verwaltet sein Menü. Es fehlen dann natürlich noch die Programm-Funktionalitäten.
Damit der eigentliche Programmcode möglichst übersichtlich und klein bleibt, ist ein Teil von STARTGEM.BAS in eine eigene Library mit dem Namen RUMPF.LIB ausgelagert.
KLib bietet einige Debugging-Funktionen. Die umfangreichste davon ist das Testlog-Verfahren, bei dem ein Programmlauf fast vollständig in einer Logbuch-Datei mit allen Funktionsaufrufen und Übergabeparametern dokumentiert wird. Dadurch läßt sich genau nachvollziehen, was das Programm wirklich gemacht hat. Da die Logbuch-Datei sehr schnell sehr groß wird läßt sich einschränken, was darin vermerkt werden soll. Die Logbuch-Funktion kann z.B. erst ab einer bestimmten Programmzeile eingeschaltet werden und es kann begrenzt werden, welche Aufrufe im Logbuch erscheinen sollen.
Zu den Libraries ExtGEM und KLextVDI liegt der Quellcode bei, so daß diese Libraries bei Bedarf erweitert werden können.
Download klibl102.zip Version 1.02 vom 15.06.2003 (146.472 Bytes).
Dieses Archiv enthält nur die Libraries, den Startup-Code und den Installer. Ein vollständiges KLib-Archiv incl. Dokumentation und Beispiel-Programm gibt es hier.
zuletzt geändert: 07.12.2005, Karsten Lüdersen, webmaster@kalue.de