Logo: Geos Online Print Archiv
G.O.P.A. - Geos Online Print Archiv
07.12.2024 Archiv  #  Recherche  #  Links  #  Kontakt  #  Gästebuch  #  Impressum

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

IZL v1.0

Autor: Gerd Boerrigter

"Ein Entwicklungswerkzeug für GEOS." So heißt es in englisch auf dem Titel des Handbuchs.
Die meisten GUP Leser werden von IZL schon gehört haben und viele haben sicher auch die Freeware-Version ausprobiert.
Nun ist die kommerzielle Version 1.0 erhältlich und es hat sich wirklich einiges getan. Das Programm wurde an vielen Stellen erweitert, besonders was die Programmierung von sichtbaren Objekten betrifft. Außerdem gibt es jetzt endlich die Möglichkeit, Daten aus Dateien einzulesen und zu schreiben.

IZL ist eine ereignisgesteuerte Programmiersprache. Sie basiert auf dem Definieren und Manipulieren von sichtbaren Objekten (sog. Visual Objects) sowie auf das Reagieren auf diese Objekte.
Das ganze klingt vielleicht für jemanden, der sich noch nie mit Objektorientierung oder ereignisgesteuerter Programmierung beschäftigt hat, etwas verwirrend, aber im Grunde ist es ganz einfach. Hier ein kleines aber unvollständiges Beispiel dafür (das so nicht lauffähig ist).

Die kürzeste Möglichkeit, einen Button mit IZL zu definieren, ist diese:

   button Tu_Was;
   end;

Diese zwei Zeilen definieren ein Objekt mit dem Namen "Tu_Was", das ein Button (Schalter) ist, welcher dann auf dem Bildschirm erscheint. Sobald man auf diesen Button klickt, wird die Funktion mit dem Namen "Tu_Was" aufgerufen; zu Funktionen später mehr.

Im Moment steht auf dem Button der Name des Objekts, also "Tu_Was", einfach aus dem Grund, weil wir IZL nicht mitgeteilt haben, was auf dem Objekt stehen soll. Wenn wir vor dem "end;" die Zeile "display "Action!" " einfügen, steht auf dem Objects: "value" für Zahlen, "text" für Text Ein- und Ausgabe, "label" nur für Textausgabe, "menue_item" um das Menü von IZL zu erweitern und schließlich "frame", das eine wichtige Rolle bei der Positionierung von Objekten hat.
Um ein Objekt nach unseren Wünschen zu positionieren, kann man noch die Zeile "position x,y" vor dem "end;" Einfügen. Das Objekt wird dann an der angegebene Position eingefügt.

Aber für die Positionierung von Buttons und anderen Visual Objects gibt es eine viel schönere Möglichkeit, die auch alle GEOS Applikationen verwenden, Geoworks nennt das Generic User Interface.
Das bedeutet, daß das Aussehen des Programms erst beim Ablauf erstellt wird und nicht schon vorher den Objekten feste Positionen zugewiesen werden muß. Damit aber GEOS die Objekte nicht irgendwo in das Fenster schreibt, kann man GEOS Hinweise geben, wie die Objekte auf dem Bildschirm plaziert werden sollen. Die wichtigsten dieser Hinweise kennt auch IZL.

IZL Bild 1 Damit man auch einen ganzen Block von Objekten ansprechen kann, können verschiedene Objekte zusammengefaßt werden. Dazu muß man wissen, daß es zwischen Objekten eine Eltern - Kinder Beziehung gibt.
Bei IZL bedeutet dies: Alles was mit den Eltern passiert, passiert auch mit den Kindern.
Das Elternobjekt gibt man bei der Objektdefinition mit an. Also z.B. "button Tu_Was, ElternObj".

Das einzige Objekt, das bei IZL Kinder haben kann, ist "frame". Ein Frame ist eigentlich genau das, was es heißt: ein Rahmen. Alle Kinder eines Frames befinden sich innerhalb von diesem.
Schauen Sie sich Bild 1 an. Sie sehen darin zusammen fünf Rahmen. Das sind die Frames, die man durch den Befehl "box" auch sichtbarmachen kann (Hier ist eigentlich viel zu viel umrahmt, es ist unübersichtlich).
Dazu ein Auszug aus dem Listing:

   frame main;   # Rahmen ohne Eltern, weil dies der erste Rahmen ist
   vertical;     # alle Kinder werden von oben nach unten angeordnet
   center_h;     # alle Kinder werden horizontal zentriert
   box;          # Rahmen zeichnen
   end;          # Ende der Definition

   label title, main:   # Eltern: main
   display "Größter gemeinsamer Teiler";
   end;
   frame input, main;   # Eltern: main
   vertical;            # frame fuer Eingabefelder
   box;
   end;
   frame in1, input;    # Eltern: input
   horizontal;          # frame fuer 1. Eingabezeile
   box;
   end;

IZL Bild 2 Die Überschrift (titel) ist als erstes Objekt in main definiert. Er erscheint somit oben und - wegen "center_h" bei der Definition von main - horizontal zentriert.
Danach wird das Eingabefeld (input) definiert. Es erscheint darunter (wegen "vertical" bei der Definition von main) und ebenfalls zentriert.
Die 1. Eingabezeile (in1) ist ein Kind-Objekt von input und erscheint deshalb innerhalb des Rahmens von input.
Die weiteren Objekte werden auf genau die selbe Art und Weise definiert, aber das Ganze ist zu lang, um komplett abgedruckt zu werden.

Ein Frame wird immer so groß, daß alle Objekte hinein passen. Wenn ein Objekt während des Programmablaufes seine Größe ändert, werden alle davon betroffenen Frames entsprechend verändert.
Der Inhalt eines Objektes kann nämlich auch während des Programmablauf geändert werden. Dies kann jedoch nur innerhalb einer Funktion geschehen. Für den "Tu_Was"-Button von oben könnte eine solche Funktion so aussehen:

   function Tu_Was;
   put title, "Berechnet den größten gemeinsamen
               Teiler von zwei ganzen Zahlen";
   end;

Das Programm würde dann nach dem Druck auf den "Tu-Was"-Button diese zu groß geratene Überschrift anzeigen, dabei würde dann der äußere Rahmen vergrößert werden, damit dieser Titel noch hineinpaßt.

Die Programmierung von Funktionen ist ansonsten der Programmierung in Pascal bzw. C nicht unähnlich, aber auch als Basic Programmierer kann man mit IZL schnell zu Erfolgen kommen.
Es gibt drei Hauptteile in einem IZL Programm. Einmal den Objekte-Block, indem alle Objekte wie Buttons definiert werden, den "variables"-Block, in dem alle Variablen definiert werden und schließlich den "functions"-Block, in dem die Funktionen stehen, die durch die Objekte aufgerufen werden, z. B. beim Klicken auf einen Button.

Die Variablen sind global (im Gegensatz zu Pascal und C Funktionen), d. h. sie sind in jeder Funktion bekannt und können auch von jeder Funktion verändert werden.
Es kann in einem Programm mehrere "variables"-Blöcke geben, aber die Variablen müssen vor der Benutzung in einer Funktion deklariert werden. Bei der Deklaration der Variablen wird ihnen ein Wert zugewiesen, an dem IZL erkennt, ob es eine integer Variable oder ein String ist. Andere Variablentypen gibt es nicht, aber es kann auch ein eindimensionales Integer Array sein.

Innerhalb einer Funktion stehen die IF - ELSE - ENDIF Bedingung und die WHILE-Schleife zur Verfügung. Das sind zwar nicht viele Kontrollstrukturen, aber aus diesen beiden kann man alle anderen wie REPEAT - UNTIL oder FOR zusammenbasteln.

Innerhalb einer Funktion können alle Operationen und Funktionen benutzt werden, die die GEOS "parse library" zur Verfügung stellt. Das sind fast alle Operationen und Funktionen, die auch in GeoCalc bzw. GeoFile möglich sind, wie z. B. AND, SIN, LEFT.

Aber da gibts auch ein Problem für nicht-amerikanische IZL Benutzer. In Amerika ist das Listen-Trennzeichen ein Komma, während es bei uns das Semikolon ist. Da es sich bei den IZL Programmen um einfachen ASCII-Text handelt, steht dort eben als Listen-Trennzeichen das Komma, so daß diese Programme unter dem deutschen Kernel mit einer Fehlermeldung abbrechen.

Es gibt zwei Möglichkeiten, die Programme auch hier zum Laufen zu bekommen. Die erste Möglichkeit ist, man paßt das IZL Programm so an, daß man alle Listen-, Dezimal- und 1000er-Trennzeichen entsprechend ändert. Das ist sehr aufwendig und fehleranfällig, weil man leicht etwas übersieht.

Einfacher ist die zweite Möglichkeit. Dazu paßt man in Voreinstellungen International/Zahlen, die Trennzeichen entsprechend an.
- 1000er-Trennzeichen: Komma,
- Dezimal-Trennzeichen: Punkt und
- Listen-Trennzeichen: Komma.

Diese Einstellung kann auch so beibehalten werden, da die meisten anderen GEOS Anwendungen wie GeoCalc diese Einstellungen nur bei der Ein- und Ausgabe verwenden und die Werte ansonsten in einem anderen Format speichern.

Eine in meinen Augen wichtige Neuerung ist die Unterstützung von Datenfiles. Bei diesen Dateien handelt es sich um normale DOS Dateien, nicht um GEOS VM Dateien. Der Inhalt von Variablen kann einfach in eine Datei geschrieben oder von dort ausgelesen werden.
Eine weitere interessante Verbesserung gegenüber der Freeware Version: durch eine kleine Änderung in der GEOS.INI ist es möglich, die ASCII-Texte mit den IZL Quelltexten per Doppelklick zu öffnen und dabei direkt die IZL Anwendung zu laden. IZL selbst wird aber nach wie vor zum Ausführen der Quelltexte benötigt.

Fazit: IZL ist ein gutes Programmiersystem für kleinere Anwendungen. Es gibt zwar nur relativ wenig Befehle, aber die sind äußerst leistungsfähig.
Sobald es jedoch um mehr geht als einen Zahlenwert oder einen kurzen Textblock zu verarbeiten, werden schnell die Grenzen von IZL erreicht. Für größere Projekte sollte man sich überlegen, ob man nicht besser mit dem SDK dran ist, da IZL in vielen Bereichen doch eingeschränkt ist. So gibt es bei IZL noch keine Möglichkeit, Grafiken in irgendeiner Form zu verwenden, auch keine Textverarbeitungs- bzw. Layoutfunktionen.
Mit anderen Worten, viel was GEOS zu Verfügung stellt, bleibt bei IZL brach liegen. Allerdings ist das SDK im Gegensatz zu IZL nichts für Anfänger die damit schnell zurechtkommen dürften, weil es noch leicht zu überschauen ist.
Auf dem Desktop PC läuft IZL v 1.0 im Gegensatz zur Freeware Version einwandfrei, das Fenster ist hier nicht mehr auf die Größe des Zoomers beschränkt.

IZL v1.0 kann direkt beim Geos User Club als Distributor des Herausgebers Feras Information Technologies bezogen werden. Derzeit mit der originalen Anleitung auf Diskette.

 

Gerd Boerrigter


Icon: IZL InterpreterAnmerkung: Die Entwicklung von IZL geht weiter, der Autor arbeitet fleißig an weiteren Verbesserungen und Erweiterungen. Wir werden aktuell darüber berichten, sobald es neues gibt.
Und natürlich sind wir an guten IZL Programmen aller Art interessiert! Bitte an Jürgen Heinisch oder Thomas Haberland schicken; sofern der jeweilige Autor damit einverstanden ist, werden wir eine Auswahl von guten IZL Quelltexten mit auf die IZL v1.0 Diskette aufnehmen.

IZL v1.0 ist bereits lieferbar!

 

   Produkt Info

     Name:              IZL v1.0
     lauffähig unter:   GWE 2.0
     Preis:             50,- DM
     Bestelladresse:    GUC Dorsten


 




Dieser Artikel ist Bestandteil von:

Ausgabe 37

! - - - - - M I C R O F I L M - - - - - ! | Jahreshaupttreffen '95 ?! | Neu: Lastschriftverfahren | Editorial | Jahreshaupttreffen des GUC 1994 | GUC Intern | 29. Regionaltreffen in Hannover | News Regio Baden | Zu Gast bei der Rhein-Main-Regio | Test Flash 8 #2 | GeoCom Workshop #5 | Probleme bei BBG !? | Neues von der Geothek (Teil 6) | Testbericht zur BBRTC | Neue Preisgestaltung beim GUC! | PD Disk für GWE2 | US-GWE v2.01 beim GUC ! | Deutsches v2.01 Update! | Deutsches v2.01 Update (2) | IZL v1.0 | Feuzi Grafiken | GeoTools Interwiev | GeoTools 2.1 Update | FontMagick v0.3 | FM Radio & Lautsprecher | Neue Programme für GW Ensemble 2.0! | OfflineReader für GeoComm | Druckertip: EPSON Stylus COLOR | Ändern des Mustertextes in der Fontübersicht | GeoCalc als Zeichenhilfe | Tabellen in GeoWorks | C64 goes to PC | Aktuelles in letzter Minute!


Kurzlink hierhin: http://geos-printarchiv.de/2003


Letzte Änderung am 01.11.2019