[Allegro] Wieder mal: #nn. ++ p>X m>Y mit Flex-Mitteln
Sibylle Koczian
Sibylle.Koczian at T-Online.de
Mo Jun 4 19:05:00 CEST 2007
Lieber Herr Eversberg, liebe Liste,
"Bernhard Eversberg" <ev at biblio.tu-bs.de> schrieb:
> Sibylle Koczian schrieb:
> >
> > Die Klammer ist das erste Zeichen, das diesen Absturz auslöst, ob sie das einzige ist, habe ich nicht probiert und würde es erst einmal bezweifeln. Das heißt, dass die Angelegenheit um einiges trickreicher wird, wenn die Grundkategorie mit bearbeitet werden soll und vor allem, wenn auch Ziffern und/oder Großbuchstaben als Wiederholungszeichen in Frage kommen. Man hätte u.U. neben der Bearbeitung der Grundkategorie noch drei Schleifen, die im Prinzip das Gleiche tun, oder aber zwei bis drei Extra-Abfragen, um die Bereiche mit verbotenen Folgezeichen abzufangen.
> $ und : und . sind auch nicht ohne Nebenwirkung.
Nicht überraschend (aber wohl keine Kandidaten für Abstürze?).
> Einstweilen sollten wir wohl das Resultat, so allgemeingültig und
> universell einsetzbar wie nur möglich, als "Trick 46" rausbringen.
>
Eine Lösung mit regulären Ausdrücken (also nicht sehr universell einsetzbar) habe ich inzwischen ausgebrütet, siehe unten. Und damit muss ich mich leider mindestens bis zum Wochenende aus dieser Diskussion ausklinken (kein Internet, keine e-mail und schon gar kein Allegro).
Beste Grüße,
Koczian
Wiederholungskategorien abarbeiten
Benutzt reguläre Ausdrücke, deshalb erst ab V27 brauchbar
Erlaubte Folgezeichen, bei Bedarf erweitern
#u!! [ 0-9a-zA-Z]
Grundkategorie, nur der Änderbarkeit wegen hier in Variable gesteckt
$grundkat #30
Prüfung des regulären Ausdrucks
variable "abc"
srx
if cancel message; end
variable "31"
=
:schleife
Z = Z + 1
variable Z
if >122 jump ende
variable
Jetzt steht das Zeichen mit ASCII-Nummer Z in der internen Variablen,
und das ist der eigentliche Trick.
Ist es ein erlaubtes Folgezeichen?
srX
Nein:
if no jump schleife
insert $folgezeichen
variable $grundkat $folgezeichen
insert $katnr
variable
if not "" perform aktion
jump schleife
:ende
Bei Bedarf hier noch Abschlussarbeiten
end
:aktion
insert $katinhalt
variable "Hier >>" $katnr $katinhalt "<< verarbeiten"
message
return
--
Dr. Sibylle Koczian
Fasanenstrasse 12
D-82293 Mittelstetten
Mehr Informationen über die Mailingliste Allegro