[Allegro] a99 und Ergebnismengen

Thomas Berger ThB at Gymel.com
Mo Nov 13 22:47:23 CET 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lieber Herr Eversberg,

ich hatte einen dem hiesigen Wetter entsprechenden Nachmittag voll
dunkler Wolken, dabei wollte ich eigentlich etwas einfaches
bewerkstelligen:

Ausgehend von einem Datensatz sollten per Flex ein paar neue
Datensaetze erzeugt und alle zusammen dem Benutzer als
Ergebnismenge praesentiert werden.

Problem 1: Es gibt keine Moeglichkeit, eine frische Ergebnismenge
anzulegen.

a) close res
   erzeugt eine neue Ergebnismenge, zerstoert aber u.U. eine alte
b) find #nnn
   erzeugt keine Ergebnismenge
[c) find #i,j,k
   sollte lt. Dokumentation funktionieren, tut es aber nicht]
d) Indirekter
   find :0\find -:0
   erzeugt normalerweise eine leere Ergebnismenge, war die
   letzte Ergebnismenge aber "vorher angezeigte Dateien",
   liefert die mengentheoretische Selbstexklusion ueberraschenderweise
   eine nichtleere Menge... War die Ergebnismenge vorher bereits
   leer, wird auch keine neue erzeugt...

Erfolg letztendlich mit - wer haette es gewusst -

e) find or #1,2\close res
   [sic!] bildet garantiert eine neue Ergebnismenge (sofern die
   Datenbank die Satznummern 1 und 2 hat) und ersetzt sie
   anschliessend durch eine leere


Problem 2: Dazunehmen des aktuellen Datensatzes zur aktuellen
Ergebnismenge mit "find /" erzeugt eine neue Ergebnismenge.

Ich habe dann schnell einen ganzen Zoo von Ergebnismengen

erzeugt
erzeugt /
erzeugt / /
erzeugt / / /
...

die ich bis auf die jeweils letzte alle nicht gebrauchen, aber auch
nicht loswerden kann. Es ist einleuchtend, dass Ergebnismengen aus
Suchen oder Registerzeilen bei Modifikation als neue Mengen modifzierte
Benennungen erhalten sollten, bei mit set R aber explizit benannten
und dann inkrementell eingesammelten Ergebnismengen ist dieses
Verhalten hoechst unerwuescht, zumal


bekanntes, altes Problem 3: Es gibt keine Moeglichkeit, Ergebnismengen
aus der Liste der Ergebnismengen herauszunehmen.

Ausser man loescht von der aktuellsten ausgehend alle jemals gebildeten.
Wenn ich aber die aktuellste behalten will und nur die Ergebnis-
mengen zu Zwischenergebnissen loeschen will *oder* eine alte
Ergebnismenge gleichen Namens, die aus einer Frueheren Anwendung des
Beispielflexes herruehrt, habe ich verloren.


Meine Desiderate sind die folgenden:

A. 1. Innerhalb eines Flexes ist die ganze Magie mit der
   "automatischen" Ergebnismengenhistorie kontraproduktiv.
   Ich benoetige normalerweise nur die aktuelle Ergebnismenge
   (die ggfls. keinen Namen hat)
   2. Vielmehr brauche ich einen Flex-Befehl, der mir im Moment
   seiner Anwendung die aktuelle Ergebnismenge unter einem
   von mir gewaehlten Namen an letzter Stelle in die
   Ergebnismengehistorie eintraegt. Gibt es eine Ergebnismenge
   mit diesem Namen schon, sollte ein Fehlerzustand entstehen.
   Diese Funktionalitaet koennte durch eine leichte Modifikation
   von "set R..." erreicht werden. Erfolgen weitere Operationen,
   entsteht wie gehabt durch Klonung eine neue Ergebnismenge.
[Andersherum formuliert: Im interaktiven Modus hinterlaesst jede
ergebnismengenrelevante Operation eine Spur in der Historie, abgesehen
von der etwas undurchsichtige Magie, die beim Aufblaettern stets neuer
Indexstellen dafuer sorgt, dass die jeweils letzte Ergebnismenge
ausgetauscht wird. Im Flex-gesteuerten Ablaufmodus hingegen soll dieses
letztere Verhalten der Standard sein, ueber "Find" mit grossem "F"
und andere Befehle mit implizitem Uebergang zum interaktiven Modus
kann man noch einmal nachdenken]

B. Es wird ein Befehl benoetigt, eine (benannte) Ergebnismenge aus
   der Historie zu loeschen, egal an welcher Position sie steht,
   Vorschlag: "erase res otto" loescht die Ergebnismenge Nr. 17,
   falls sie den Namen "otto" traegt und schiebt die Liste entsprechend
   auf.
[Die Funktionalitaet scheint irgendwo vorhanden zu sein, schliesslich
kann ich mit der Entf-Taste im Auswahlfenster gezielt jede beliebige
Ergebnismenge aus der Historie herauswerfen, nur nicht per Flex]


C. das von avanti bekannte "find *new" (oder etwas aehnliches) muss
   auch in a99 existieren, "close res" ist kein Ersatz.


Mein oben skizzierter Flex wuerde dann folgendes tun:

1.) erase res ergebnis
   Entfernt aus der Historie eine ggfls. von frueheren Ablaeufen noch
   existierende, nun uninteressante Ergebnismenge "ergebnis", egal an
   welcher Position.

2.) find *new
   beginnt mit einer garantiert leeren, neuen Ergebnismenge.

   find /
   find /
   ...
   sammelt allmaehlich die Resultate ein

3.) set Rergebnis
   als abschliessender Befehl fixiert die kumulierte Ergebnismenge
   fuer die Nachwelt.

Vorher hatte ich eine Ergebnismengenhistorie
  Lesezeichen
  Vorher angezeigte Dateien
  ...
  ergebnis
  ...
  letzte frueher gebildete

Nachher habe ich eine Ergebnismengenhistorie
  Lesezeichen
  Vorher angezeigte Dateien
  ...
  ...
  letzte frueher gebildete
  ergebnis


viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFWOfrhKFJT0F1FsoRAnI7AJ9uFCj+rq681AnGdlLVBO/7I2dORACeI7J+
LM2lZl4iBfrfWmPTLOZIrHg=
=gkMN
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Allegro