[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