Moni: Anfängerin bittet um kleine Hilfe ;)

Hallo Leute,

ich bin gerade dabei meinen Code etwas zu optimieren und stecke an einer Stelle fest. So weiß ich, dass man folgenden Code kürzer schreiben kann:

Variable0 = Variable[0];
Variable1 = Variable[1];
Variable2 = Variable[2];

Mein Problem ist vor allem die erste Variabel.

for (i=0;i<=2-1;i++){
  Variablei = Variable[i];
}

Geht natürlich nicht. Aber meine Versuche Variablei zu umschreiben klappen einfach nicht. Ich meine man mußte hier etwas mit Gänsefüßchen oder so ausklammern und mit dem Plus-Operator dann zusammenschreiben. Also etwas wie:

for (i=0;i<=2-1;i++){
  "Variable"+i = Variable[i];
}

Das klappt aber auch nicht und ich bin nach zahlreichen Versuchen schon ziemlich gefrustet :(

Ich arbeite mit diesem Code in ActionScript 2 (Adobe Flash), wobei das Problem in JavaScript, PHP usw. wohl identisch sein dürfte.

Wer ist so nett und sagt mir die Lösung? ;)

Liebe Grüße

Moni

  1. hi,

    "Variable"+i = Variable[i];

    das dürfte wohl in allen Programmiersprachen schiefgehen, PERL sagt dazu folgendes:

    Can't modify addition (+) in scalar assignment at C:\Dokumente und Einstellungen\rolf\Desktop\tst.txt line 3, near "33;"
    Execution of C:\Dokumente und Einstellungen\rolf\Desktop\tst.txt aborted due to compilation errors.
    Prozeß abgeschlossen mit Exit-Code 255

    --roro

    1. Hallo roro,

      danke für deinen Beitrag. Wie ich oben bereits sagte, ist ja mein Problem, dass es nicht geht, ich aber weiß, dass es eine Lösung dafür gibt, die so ähnlich aussieht. Ich bin aber über jede Lösung froh, da dies viele Zeilen Code bei mir sparen würde.

      Was ich also nach wie vor brauche ist eine funktionierende Variante von:

      for (i=0;i<=2-1;i++){
        Variablei = Variable[i];
      }

      Das "Variablei" in der Mitte soll eine Variable sein mit angehängtem Zähler i. Also im Ergebnis Variable1, Variable2, Variable3...

      Meine beiden genannten Lösugen funktionieren leider nicht und die Fehlermeldungen kenne ich nach rund 20 Versuchen bereits auswendig. :(

      Falls jemand eine Lösung weiß, wäre ich ihm sehr dankbar ;)

      1. Versuche es doch mal mit "eval()"evel führt wenn möglich eine Zeichenkette als Befehl aus:

        for (i=0;i<=2-1;i++){
          eval("Variable"+i+" = Variable[i];");
        }

        müsste klappen denke ich ;-)

        1. hi moni,

          wenn ich dein Problem richtig verstanden habe, brauchst du einen variablen Namen und einen Wert oder? Versuche das doch mit einen 2-dimensionalen Array - in etwa so:

            
          function fill(VarArray, size)  
          {  
             var a = new Array(size)  
             for (i=0; i < size; i++)  
             {  
                a[i]    = new Array(2);  
                a[i][0] = "Variable"+i;  
                a[i][1] = VarArray[i];  
             }  
             return a;  
          }  
          
          

          so hättest du in a[0][0] den Namen und in a[0][1] den wert usw.

          wenn nicht funzt (habs nicht getestet) ist es ggf. wenigstens ein denkanstoss etwas in der richtung zu probieren...

          gruss und viel spass noch,
          seppel

  2. Hallo,

    ich bin gerade dabei meinen Code etwas zu optimieren und stecke an einer Stelle fest. So weiß ich, dass man folgenden Code kürzer schreiben kann:

    Variable0 = Variable[0];
    Variable1 = Variable[1];
    Variable2 = Variable[2];

    Wie meist du das jetzt genau? Die Variante hinter den „=“ ist die zu bevorzugende. Vorher solltest du natürlich noch das Array öffnen.

    Mein Problem ist vor allem die erste Variabel.

    for (i=0;i<=2-1;i++){
      Variablei = Variable[i];
    }

    Warum willst du das Array überhaupt in Einzelvariablen umwandeln? Gerade Arrays sind doch dazu gedacht, mit for-Schleifen bearbeitet zu werden.

    Du solltest Variblen (jedenfalls in JS) immer mit dem Schlüsselwort „var“ beginnen. Also lieber for (var i = 0;…

    Geht natürlich nicht. Aber meine Versuche Variablei zu umschreiben klappen einfach nicht. Ich meine man mußte hier etwas mit Gänsefüßchen oder so ausklammern und mit dem Plus-Operator dann zusammenschreiben. Also etwas wie:

    for (i=0;i<=2-1;i++){
      "Variable"+i = Variable[i];
    }

    Das klappt aber auch nicht und ich bin nach zahlreichen Versuchen schon ziemlich gefrustet :(

    Du könntest hier eval("Variable"+i) schreiben. Aber da das absolut unsauber und langsam ist, solltest du möglichst auf solche Dinge verzichten.

    Ich arbeite mit diesem Code in ActionScript 2 (Adobe Flash), wobei das Problem in JavaScript, PHP usw. wohl identisch sein dürfte.

    K.A. ob's in Actionscript auch eval() gibt…

    Wer ist so nett und sagt mir die Lösung? ;)

    s.o.
    Aber wie gesagt, was spricht gegen das Array?

    mfg. Daniel

    1. Hallo Daniel,

      vielen Dank für deine Hilfe. Eval gibt es in ActionScript, doch so richtig funktionieren wollte das auch nicht. :(

      Ich würde am liebsten auch nur mit Arrays arbeiten, doch hier ist es so, dass die Variable1, Variable2, Variable3 usw. Textinhalte für Felder sind und in Flash diese nicht einem Textfeld direkt zugewiesen werden können. Darum muss ich die gewünschten Daten immer erst aus einem Array rausholen. Da die Felder Variable1, Variable2, Variable3 usw. heißen, muss es doch eine Vereinfachung dafür geben...

      Trotzdem danke für deine Hilfe ;)

      Moni

      1. vielen Dank für deine Hilfe. Eval gibt es in ActionScript, doch so richtig funktionieren wollte das auch nicht. :(

        Wenn heißt es eval.

        Ich würde am liebsten auch nur mit Arrays arbeiten, doch hier ist es so, dass die Variable1, Variable2, Variable3 usw. Textinhalte für Felder sind ...

        Was für Felder?

        Dein Beispiel funktioniert ohne Probleme so:

        window['Variable0'] = Variable[0];  
        window['Variable1'] = Variable[1];  
        window['Variable2'] = Variable[2];
        

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  3. Hallo Moni,

    Du suchst variable Variablen.
    eval() geht natürlich auch.

    Viele Grüße aus Freiburg,
    Marian

    --
    Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->