[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