[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