Anfängerfrust

Thomas Berger ThB at gymel.com
Mi Dez 3 20:45:28 CET 2003


Hallo Herr Rother,

> als allererstes vielen Dank für Ihre Mühen. Das Formular des Neuzuganges
> erscheint jetzt ohne weitere umwege (wie soll ich denn als Normalsterblicher
> a99-Anwender auch auf diesen herrlich verschlungenen weg über input.flx
> kommen?), der edle Spender wird invertiert - prima. Nur bei den #97er

... vor allem sind diese Schlingen ohne Not: Man koennte das auch
so gestalten, dass in oninput.flx die Variable mit dem Namen des
aufzurufenden Formulars geimpft wird (und nicht mit der Sprungmarke
aus der .CFG, die hier ja keine Bedeutung hat). Dann haette das
Erstellen des oninput-Mechanismus aber mindestens 120 Sekunden
laenger gedauert, die Oekonomie des Entwicklers hatte hier klar
die Prioritaet vor der der Nachnutzer...


> Kategorien habe ich ein wenig mogeln müssen, da mir etwas anderes außer den
> senkrechten Strich mit der Nummer des entsprechenden Indixes für das
> Indizieren nicht einfiel - und das eben nicht funktionniert. Für den Spender

Ich muss raten, wenn ich Ihnen hier einen Rat geben sollte:
Wenn p"|:" nicht funktioniert, hilft Ihnen dann p{"|:"} ?

> habe ich die #57 und für den Wohnort die #74 genommen.

#74 brauchen Sie sonst nicht in Titelsaetzen? Schwer zu glauben.

 
> Was das Generieren von Zugangsnummern und Signaturen betrifft, so haben Sie
> mir den Mund noch wässriger gemacht, als er ohnehin schon war. Wo genau
> könnte ich, außer in der Flexdokumentation, nachlesen, was da alles zu
> berücksichtigen ist?

Anbei ein Beispiel (an der Demodatenbank getestet), das als onput.flx
im Moment des Wegschreibens eines Datensatzes aus #91 der Form 
#91 98/?
die leztze Zugangsnummer mit 98 ... aus dem Index ermittelt, eins 
draufaddiert und in #91 abwirft. Damit dies keine Probleme mit 
Parallelbearbeitungen gibt, muss der Satz unmittelbar darauf gespeichert
werden (strenggenommen darf der Flex erst ablaufen, wenn die Datenbank 
komplett gegen Schreibzugriffe gesperrt ist, wie es etwa innerhalb der 
PV (Programmierte Validierung, vgl. Handbuch) passiert, beim onput.flx 
ist das nicht der Fall, so dass hier dublett generierte Nummern nicht
voellig ausgeschlossen werden koennen), jedenfalls halte ich onput.flx 
(oder jeden Flex, der mit dem Wegspeichern des Satzes endet) fuer einen
halbwegs geeigneten Ort fuer solche Zaehlereien. (Schlaegt das Speichern
allerdings fehl, weil etwa die PV etwas zu bemaengeln hat, muesste der 
alte Inhalt #91 98/? wieder hergestellt werden, hier muesste man nach
dem "put" mit einem if ok noch weitere Tests veranstalten. Ebenfalls
noch hineinprogrammieren muesste man den Fall, dass ein Praefix
eingegeben wurde, zu dem noch keine Nummer existiert, hier wird man
entweder "1" vergeben wollen oder aber Generierung und Speichern
abweisen: Der Bearbeiter sollte sich vergewissern, dass seine
Eingabe korrekt ist und dann ".../1" manuell eintragen)


>>>
  %/% onput.flx: Satz wegschreiben, dabei #91 anhand 
  %/% Praefix aus Kategorie und NC aus Register ergaenzen

  #91 betrachten
var #91
  enthaelt "/?" => dann etwas tun
if %/?% jump ergz91
  sonst Satz speichern und fertig
jump ende

:ergz91
  Suchbegriff fuer Reg. 9 Abschnitt Z bilden (da wohnen die Indexate)
var '-2 |9 _Z' #91(e'/?') ' z'
  -2 Zeilen holen: Die erste definitiv zu grosse und die davor
qrix
ins #ucc
  NC herausoperieren (nicht darstellbares Zeichen ist Strg-T)
var #ucc(e"" b" " f" " b" ")
  inkrementieren (via internem Zaehler)
z =
z + 1
  mit #91 vereinigen und als neue #91 ablegen
var "#91 " #91(e'/?') "/" z
ins

:ende
put
display
show record
<<<

[Der qrix-Befehl hatte beim Testen einige Ueberraschungen fuer
mich parat, vgl.
http://www.gymel.com/bugzilla/show_bug.cgi?id=322
http://www.gymel.com/bugzilla/show_bug.cgi?id=323
http://www.gymel.com/bugzilla/show_bug.cgi?id=324
Ich habe das Beispiel oben allerdings so konstruiert, dass
es auch mit repariertem qrix-Befehl noch funktionieren sollte.
]

Wasserdicht wird so etwas aber nur mit einem voellig anderen
Ansatz, naemlich eigenen Generatorsaetzen, die im Moment
des Hochzaehlens kurzfristig (get edit) gesperrt werden koennen.
Hat man aber wie in vielen Freihand-Signatursystemen potenziell
unendlich viele Signaturpraefixe, benoetigt jedes einzelne
einen eigenen Generatorsatz, um den zugehoerigen NC verwalten.
D.h. ein Flex muesste die Generatorsaetze bei Bedarf etwa
mit obigem Mechanismus erzeugen, tendenziell haben Sie irgendwann
fast so viele Generatorsaetze wie Signaturen, vielleicht lohnt
sich das dann doch nicht immer. [Leider kennt a99 das "get edit"
nicht, sondern nur "set rec loc/fre", damit kann man derzeit
Generatorsaetze nicht realisieren, vgl.
http://www.gymel.com/bugzilla/show_bug.cgi?id=325
]

viel zu tun & viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro