puh ... wie mach ich das?

M

MF

Sorry mir ist leider keine passende überschrift eingefallen.

Ich habe folgendes Problem:

Ich habe in meinem MC 53 dynamische textfelder, jedes textfeld gibt eine bestimme variable wieder (holder1 - holder53).
dazu gibt es noch ein textfeld (Text) in welchem per AS eine schreibmaschiene simmuliert wird, jedesmal wenn der text fertig geschrieben ist soll er in holder1 geschrieben werden und falls schon text im holder1 vorhanden ist soll dieser in holder2 kopiert werden usw.

bisher sieht das so aus:

Code:
...
if(holder2 != holder1)
{
	holder3 = holder2;
}
if(holder1 != Text)
{
	holder2 = holder1;	
}

holder1 = Text;
Bevor ich jetzt aber für alle 53 textfelder eine if anweisung mache wolt ich fragen ob ich diesen prozess auch in einer wihle bzw for schleife abhandeln kann? Sprich er soll bei holder53 anfangen und bei holder1 aufhören.
Mein erster versuch sa so aus:

Code:
for(i=53; i>=1; i--)
if(i == 1)
{
  holder1 = Text;
}
else if(i == 2)
{
  if((holder+(i-1) != Text)
  {
    eval(holder+i) = eval(holder+(i-1));
  }
}
else
{
  if((holder+(i-1) != (holder+(i-2))
  {
    eval(holder+i) = eval(holder+(i-1));
  }
}
nur wie ihr sicher seht geht das nicht weil da ein ganz dummer fehler drin ist: eval(holder+i) = - kann natürlich nicht funktionieren, leider bin ich zu dumm zu kapieren wie ich das i hinter holder bekomme damit er eine der holder variablen anspricht und verändert.

Sicher ist die Lösung total simpel aber ich bin grade einfach zu doof die lösung zu finden :)

please help me

greetz Marcus
 
Generell eher in der Form:
PHP:
eval("holder"+i);
aber ich denke, es gibt noch eine weitaus einfachere Lösung.

Das was du da hast, sieht jedenfalls nicht so recht freundlich aus, aber das ist jetzt nur auf den ersten Blick getippt.

Weiß nicht, ob ich jetzt dazu komme, mir das mal näher anzuschauen, aber wie geschrieben - es sollte imho einfacher gehen.

Geist

P.S.:
War da nicht was mit eval() auf der rechten Seite eines Zuweisungsoperators? *grübel*
 
ja das ist nicht ganz funktionstüschtig wie es da steht ich habe das einfach so ausm kopf da hingeschrieben, da fehlen noch ein paar { und irgendwo ist noch nen fehler drin.

ich schau mir das jetzt mal genauer an und poste mein ergebniss dann hier ... und auch einen link zur fertigen datei.

thx for help Geist

greetz Marcus
 
hmm also: eval("holder" + i) = eval("holder" + (i-1));
geht keines falls, da meckert er immer rum:

Symbol=texscroller, Layer=Aktion, Frame=5: Line 12: Left side of assignment operator must be variable or property.
eval("holder" + i) = eval("holder" + (i-1));


hattes wohl recht mit deiner vermutung: "War da nicht was mit eval() auf der rechten Seite eines Zuweisungsoperators? *grübel*" ;)

Wenn du weist wo der haken ist dann poste es bitte.

greetz Marcus
 
Zuletzt bearbeitet von einem Moderator:
Kleines Beispiel - wird sicherlich auch nicht der einfachst mögliche Algorithmus sein, aber brauch müsste es sein.

Meine Tests hat's zumindest eben alle bestanden. :)

hth,
Geist
 

Anhänge

  • durchlauf.rar
    1,9 KB · Aufrufe: 14
Jo, wusste doch, dass da irgendwas war... :)

Aber warum krieg' ich keine Fehlermeldung und das Script läuft tadellos, am eval() scheint's ja nicht zu scheitern...?!

Ich hätte eh mit dem []-Operator gearbeitet, aber für die Sache war's mir mal einen Versuch wert über eval() zu gehen.

Geist
 
ohne mich jetzt mit seinem problem befasst zu haben:

hab mal aus seinem script eine linie rausgenommen:

PHP:
eval(holder+i) = eval(holder+(i-1));

das geht eben seit mx nicht mehr. aus dem oben
genannten grund.

korrekt:
PHP:
set('holder'+i, 'holder'+(i-1));

und mit dem []-operator hat das alles sowieso
nichts zu tun;)
 
Ich habe in meinem Script auch nicht ganz damit gearbeitet, sondern schon mit eval() auf der linken Operatorseite, aber ich habe nicht dem geevalten ( :rolleyes: ) Wert einen anderen Wert zugewiesen, sondern einer Eigenschaft des geevalten Wertes einen anderen Wert zugewiesen, damit wird dann anscheinend wieder die Voraussetzung für das Verwenden von eval() erfüllt:
PHP:
eval("holder"+(i+1)).text = eval("holder"+i).text;
Denke ich zumindest...

Und warum soll das mit dem []-Operator nix zu tun haben? :)

Gleicher Ausdruck mit diesem Operator:
PHP:
this["holder"+i] = this["holder"+(i-1)];
und das dürfte ja wohl laufen...

Aufklärung erwünscht,
Geist
 
tja, das obere funktioniert tatsächlich (warum?),
grundsätzlich hat aber eval nichts auf der linken
seite des zuweisungsoperators zu suchen. ist einfach
so. Dazu gibt's übrigens auch eine tech-note von
macromedia. abgeshen davon hat das beispiel gor nix
mit seinem script zu tun;)

Beim zweiten hast du natürlich recht; ist natürlich
identisch. der zugriffsoperator bezieht sich ja auf
objekte und ich hab in seinem script keine gesehen.
was sich natürlich schnell ändert, wenn du this
aufnimmst. :)
 

Neue Beiträge

Zurück