Trick
35: Gleichlautende Flips
Aufgabe: Mehrere gleichlautende Flips präsentieren, die aber
unterschiedliche Dinge tun.
Was ist das Problem? Flips funktionieren so, daß die sichtbare
(meistens blau unterstrichene) Zeichenfolge beim Anklicken
verglichen wird mit den in den Variablen #uY? hinterlegten
Zeichenfolgen. Die erste Übereinstimmung wird genommen,
sagen wir #uYk. (Mit Alt+r kann man sie alle sehen und diese
Dinge kontrollieren!) Dann wird #uZk hergenommen, als FLEX
interpretiert und ausgeführt. Daher sind, einfach weil
immer die ERSTE Ubereinstimmung genommen wird, gleichlautende
Flips nicht möglich - ausgeführt wird immer nur der erste.
Der Trick besteht darin, daß der FLEX zuerst die TextZEILE
auswertet, in der geklickt wurde. Und in der Textzeile muß
ein Kriterium stehen, das dann eindeutig ist und das eindeutige
Funktionieren ermöglicht.
Die Textzeile auswerten? Das geht mit
var zc
schon hat man sie in der iV und kann machen damit, was immer
man will.
Dieser Trick wird ausgenutzt in dem neuen FLEX xgrep.flx,
der mit V27.1 kommt. Er dient dazu ausgewählte Textdateien
zu durchsuchen mittels RegEx-Methodik, z.B. Importparameter,
CFG-Dateien oder Verlautbarungen. Wenn man letztere wählt
und als Suchbegriff eingibt: isbn + 13
dann kommt heraus:
DATEI: c:\allegro\help\vb184
show -- c:\allegro\help\vb184@309 - Ab 2007 wird eine
13stellige,...
DATEI: c:\allegro\help\vb193
show -- c:\allegro\help\vb193@84 - Man gibt die ISBN
so ein, wie sie...
DATEI: c:\allegro\help\v258\vb184
show -- c:\allegro\help\v258\vb184@309 - Ab 2007 wird
eine 13stellige, ...
***** 3 Vorkommnisse von isbn + 13 gefunden
Und in jeder Zeile ist "show" ein Flip - 3mal dasselbe! Es können
aber
auch 100 sein oder mehr!
Die Zeile enthält aber jeweils den Dateinamen und die Zeilennummer
(hinter @) innerhalb der Datei! Das ist eindeutig. Aus dem Inhalt
von zc kann man also präzise isolieren, welche Datei
es ist und
welche Zeile, und der Klick auf "show" liefert genau diese Datei
in der Anzeige, positioniert auf genau die Zeile.
Pfiffige werfen jetzt ein: Aber zwei gleichlautende Flips dürfen
dann
nicht in derselben Zeile stehen! Doch, wenn diese genügend
geschickt
gestaltet ist. Denn var zc liefert die Textzeile, aber an
der
exakten Stelle, wo geklickt wurde, ist __ eingefügt, daher kann
der FLEX dann genau herausfinden, welcher von mehreren Flips angeklickt
wurde. Wie gesagt, die Zeilengestaltung muß dafür gut
durchdacht
sein, damit man mit Manipulationsbefehlen das Kriterium herausfischen
kann, um das es geht.
Wir denken, das neue xgrep wird sehr populär werden,
auch bei
jenen, die sich mit FLEX weiter nicht befassen.
Die bisherige Verlautbarungssuche wird auch hinsichtlich
Schnelligkeit übertroffen.