[Allegro] Frage zu #t{'…'} im Indexparameter; Wiederholungskategorien

Bernhard Eversberg ev at biblio.tu-bs.de
Di Nov 12 08:14:14 CET 2013


Am 11.11.2013 16:14, schrieb Thomas Fischer:

 > Hat der Befehl
 > #t{'Text'}
 > in den Indexparametern eine Nebenwirkung?
 > Ich habe den Eindruck, dass er die aktuelle Erstellung des Eintrags
 > beendet (wie #t{8}) und alles was danach kommt dem Register 1 zuordnet.

Hier glückt uns kein Nachvollzug, wir braeuchten zumindest die
konkrete Parameterdatei, mit der dieses auftritt, und den Hinweis,
an welcher Stelle.

**********************************************************

 > Eine weitere Seltsamkeit ist mir aufgefallen:
 > Wenn ich bei A99 per Copy&Paste
 > #12~Text 1
 > #12~Text 2
 > in einen Datensatz ohne #12 einfüge, so erhalte ich
 > #12 Text 1
 > #12aText 2
 > #12bText 1
 > Soll das so sein?

Nein. Dieser Fehler tritt nur auf, wenn  #12~Text 1  die *erste* Zeile
einer mehrzeiligen Eingabe ist. Dies war wohl bisher in all den Jahren
noch nie vorgekommen, oder wurde, falls doch, dann als skurriles
Irritat abgetan.
Wir konnten es ausmerzen, V33.5 ist dann seiner ledig.

**********************************************************

 > Außerdem ist mir heute aufgefallen, dass eine meiner Datenbanken
 > "sich nicht richtig öffnen lässt": wenn man sie aufruft erscheint A99
 > mit leeren Fenstern, die Indexanzeige ist auch weitgehend leer
 > (immer nur ein Eintrag?).
 > Soweit ich sehe liegt das daran, dass die Datenbank keinen Satz #1
 > hat und daher die Befehlsfolge
 > find #1
 > show rec
 > ins Leere läuft. Ich habe als Erste Hilfe ein
 > if no find #2
 > ergänzt, eine richtige Lösung ist das aber nicht.

Zwei Dinge dazu:

1. Es ist nicht zwingend notwendig, daß am Beginn ein bestimmter
    Datensatz geladen und angezeigt werde. Die zwei Zeilen dürfen
    entfallen.

2. Ein Problem tritt auf, wenn der Satz #1 nicht existiert, d.h. die
    Satznummer 1 unbesetzt ist. Das wiederum kommt NUR vor, wenn
    Satz #1 gelöscht worden war, danach eine "Bereinigung" (früher
    "Entlüftung" genannt) stattfand und noch kein neuer Satz erfaßt
    wurde, wobei die #1 automatisch an denselben vergeben worden wäre.

Man kann also den Usus in Frage stellen, beim Start immer den Satz 1
erscheinen zu lassen. Im Grunde ist das doch eher verwirrend, oder
nicht? Wieso gerade dieser? Warum nicht der letzte, neueste Satz?
Wir pruefen das. Vielleicht gibt es Vorschlaege? Oder hat jemand
schon was Besseres, Interessanteres, Plausibleres?

Hier eine Sequenz, um den letzten gueltigen Satz zu kriegen, unter
Vermeidung gelöschter und ungültiger Sätze:

last #
:lox
if del prev #;jump lox
if no prev #;jump lox
if no nix
disp
sho rec
:nix

Im Falle ausbleibenden Widerspruchs bauen wir das ein in den
_start.flx des Gesamtpakets.
Anm.: Sowohl  next #  wie  prev #  übergehen die unbesetzten
Satznummern, darum braucht sich der FLEX also nicht zu kümmern,
nur um gelöschte (ungültige).


B.E.






Mehr Informationen über die Mailingliste Allegro