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.