[Allegro] Von einer Variablen einen variabel langen Teil abschneiden

Sibylle Koczian Sibylle.Koczian at T-Online.de
Di Jul 17 15:56:00 CEST 2007


Liebe Liste,

ich möchte in eine Kategorie eine Zeichenkette schreiben, die aus Nullen und Einsen besteht. Das Problem dabei: wo die Einsen stehen, muss aus Inhalten anderer Kategorien berechnet werden. Es geht auf ziemlich umständliche Art mit zwei Schleifen: Nullen anhängen, so lange der interne Zähler kleiner ist als die Position der ersten Eins, Eins anhängen, den internen Zähler um den gewünschten Abstand erhöhen, zum Schleifenanfang; in einer weiteren Schleife mit Nullen bis zur gewünschten Länge auffüllen.

Etwas netter schiene mir:

$ausgangsstring = '000000000000'            (gewünschte Gesamtlänge)
z = $gewuenschteStartposition
:loop
$ausgangsstring = $ausgangsstring(0,z-1) '1' $ausgangsstring(z+1,0)
z = z + $gewuenschterAbstand
if z < $gewuenschteGesamtlaenge jump loop

Geht leider nicht (auch nicht mit u-Variablen). $ausgangsstring(0,z) ergibt einfach den Ausgangs-String in voller Länge, und $ausgangsstring(0,z-1) bringt A99 zum Absturz.

Hiermit kann man testen:

x variable '000000'\insert #uxA\z = 2\variable #uxA(0,z) '1' \message

Weiß jemand einen Trick, der funktioniert und das Gewünschte liefert?

Ich sehe doch richtig, dass es keinen Flex-Befehl gibt, der einfach ganz direkt der i-ten Stelle einer Kategorie oder Variablen ein neues Zeichen zuweist (mit variablem Wert von i)?

Dank und Gruß,
Koczian

-- 
Dr. Sibylle Koczian 
Fasanenstrasse 12 
D-82293 Mittelstetten 




Mehr Informationen über die Mailingliste Allegro