6 Eigene FLEXe erstellen
Nachdem Sie nun einige Theorie über sich haben "ergehen" lassen müssen, ist es an der Zeit, zu dem Punkt zu kommen an dem Sie Ihren ersten eigenen FLEX erstellen und in Ihr System integrieren. Zum Erstellen einer FLEX-Datei benötigen Sie einen Editor Ihrer Wahl oder Sie erstellen die Datei direkt aus allegro heraus. Empfehlenswert und hilfreich ist die Benutzung eines Editors mit der Möglichkeit des sogenannten Syntax-Highlighting, wie es z.B. bei dem Open Source Editor Notepad++ der Fall ist. Die NPP-Erweiterung des Syntax-Highlightings für FLEX ist bereits von uns erstellt worden und kann beliebig erweitert und verändert werden. Möchten Sie den FLEX mit Hilfe von allegro erstellen, so rufen Sie das Füllhorn (ALT+h) auf, und wählen den Punkt "Neue Textdatei schreiben" an (siehe Abbildung 7).
Abbildung 7: Füllhorn - Neue Textdatei schreiben
Erstellen wir doch einmal anhand eines konkreten Beispiels gemeinsam eine FLEX-Datei. Als Beispiel soll unser neuer FLEX die aktuelle Ergebnismenge durcharbeiten und dabei in jedem Datensatz ein Feld mit der Nummer #31 anlegen, daß ein einzugebendes Schlagwort enthält. Der entsprechende FLEX hätte dann folgenden Inhalt:
// SW-NEUB.FLX : Neues Schlagwort in jeden Satz der Erg.Menge einfuegen
// 2005-03-14 Variante B: Anderes SW fuer jeden Satz
// Gibt es ueberhaupt eine Erg.Menge? Wenn nein -> :keine
if empty jump keine
// Ersten Satz der Erg.Menge laden
first
// Folgende Schleife wird fuer jeden Satz ausgefuehrt:
:schleife
// Den Satz anzeigen
show rec
display
// Das gewuenschte neue Schlagwort abfragen:
// (Wenn #uSW schon belegt, erscheint es als Vorgabe)
ask Wie soll das Schlagwort fuer diesen Satz lauten?=#uSW
if "" end
// und in Hilfsvariable #uSW einfuegen
insert #uSW
// Schlagwort in #31 einsetzen, aber wenn #31 schon besetzt, dann
// das neue hinten mit "; " anhaengen
if #31 var #31 "; " #uSW
if not #31 var #uSW
insert #31
// und Satz wieder speichern:
put
// naechsten Satz laden:
next
// Wenn es noch einen gab, dann Sprung nach :schleife
if yes jump schleife
// Sonst ist Schluss:
jump schluss
:keine
// Das gewuenschte neue Schlagwort abfragen:
ask Wie soll das Schlagwort fuer diesen Satz lauten?=#uSW
if "" end
// und in #uSW speichern
insert #uSW
// dann an #31 anhaengen
if #31 var #31 "; " #uSW
if not #31 var #uSW
insert #31
// und Satz wieder speichern
put
:schluss
// Den momentanen (also letzten) Datensatz noch neu anzeigen
show rec
display
message Erledigt!
Sie können diesen Text direkt kopieren (Markieren und STRG+C) und in den entsprechenden Editor einfügen (STRG+V), um sich die Schreibarbeit zu ersparen. Ja nachdem für welche Eingabevariante Sie sich entschieden haben, sollten Sie entweder Abbildung 8 oder ein mit Abbildung 9 vergleichbares Bild auf Ihrem Bildschirm sehen.
Abbildung 8: sw_neu.flx mit allegro
In Abbildung 9 ist der Vorteil des Syntax-Highlightings erkennbar. Die FLEX-Befehle, die Variablen, die Kommentarzeilen und der normale Text sind stilistisch voneinander gut zu unterscheiden, so daß man sich besser und schneller im FLEX zurechtfinden kann. Dies ist besonders bei größeren FLEXen sehr hilfreich!
Nachdem nun der Quellcode im Editor eingegeben wurde, muß die Datei lediglich nur noch in einem Pfad wie in Kapitel 4 beschrieben, abgespeichert werden, zum Beispiel unter dem Namen sw_neu-flx.
Zum Testen können Sie nun im Schreibfeld die Anweisung
X sw_neu
eingeben, um Ihren ersten, selbst geschriebenen FLEX einmal zu testen.
Abbildung 9: sw_neu.flx mit Notepad++ und Syntax Highlighting
Diesen FLEX können Sie nun als Grundlage für weitere FLEXe nehmen, mit denen Sie an der Ergebnismenge etwas ändern wollen. Der Hauptteil dieses FLEXes besteht nämlich aus den Zeilen:
if #31 var #31 "; " #uSW
if not #31 var #uSW
insert #31
//und Satz wieder speichern:
put
Laden Sie diesen FLEX in einen Editor, bearbeiten Sie ihn, passen Sie eventuell den Abfragetext an und speichern Sie ihn unter einem neuen Namen ab. Schon haben Sie einen weiteren FLEX erstellt, der Änderungen in der Ergebnismenge vornehmen kann.
Vielleicht möchten Sie den FLEX auch auf einen der 8 FLIP Buttons legen?
Wenn Sie zum Beispiel nur für die Dauer Ihrer aktuellen allegro Sitzung Ihren FLEX auf den Button 1 legen möchten, geben Sie folgendes im Schreibfeld ein:
x flip 1&1: SW_NEU= X sw_neu
Danach können Sie mit der Tastenkombination ALT+1 den FLEX starten. Bei der nächsten Sitzung ist er allerdings wieder weg!
Soll der FLEX dauerhaft auf einen der FLIP Buttons gelegt werden, so müssen Sie die bereits kennengelernte Datei _start.flx aus Kapitel 5.3 bearbeiten. Ersetzen Sie dabei einfach den FLEX, von dem Sie meinen, ihn nicht zu brauchen mit Ihrem eigenen.
Hilfreich ist es eventuell auch, einen FLEX aus einer Hilfedatei heraus zu starten. Diese Hilfedateien sind im Format *.rtf und Sie können diese mit allegro oder mit einem Editor Ihrer Wahl bearbeiten. Auch hierfür können wir für Notepad++ ein Syntax Highlighting zur Verfügung stellen. Zur Einbindung eines FLEXes in eine *.rtf Datei empfiehlt es sich aber, allegro zu benutzen.
Legen Sie zuerst einmal über das Füllhorn eine neue Textdatei an und schreiben Sie zum Beispiel folgenden Text hinein:
Eigenes Menü
Neues Schlagwort einsetzen
Jeden Datensatz der Ergebnismenge mit einem neuen Schlagwort versehen
Markieren Sie den Text "Neues Schlagwort einsetzen" und klicken Sie mit der rechten Maustaste darauf. Wählen Sie die Funktion 'FLIP' an. Es wird eine Zeile erscheinen, die in etwa so aussehen wird:
?Neues Schlagwort einsetzen=Dadurch wird aus dem markierten Text ein FLIP, der die Anweisung ausführt, die hinter dem '='-Zeichen eigetragen wird. In unserem Beispiel ist dies
X sw_neu
Speichern Sie die neue Datei unter einem Namen Ihrer Wahl ab, mit der Einschränkung, daß sie nicht den gleichen Namen wie der FLEX trägt!
Nennen wir sie also einfach einmal 'xsw_neu.rtf'. Somit wissen wir anhand des Namens, daß der FLEX sw_neu etwas damit zu tun haben muß.
Rufen Sie diese Datei einfach einmal mit
h xsw_neu
im Schreibfeld auf.
Sollte der FLIP nicht funktionieren, haben sich beim Abspeichern ein paar unerwünschte Zeichen in die rtf-Datei 'gemogelt'. Öffnen Sie in diesem Fall die rtf-Datei noch einmal mit einem Editor und suchen Sie nach den Zeilen, in denen der FLIP deklariert wird. Finden sich in dieser Zeile Elemente wie \f0 oder \f1 dann löschen Sie diese Elemente und speichern die Datei mit den vorgenommenen Änderungen noch einmal ab, dann sollte alles funktionieren.