Array nicht mehr verfügbar?!

daflowjoe

Mitglied
In einer selbst erstellten Indexzugriff benutze ich folgende Deklarationen:

Code:
for (var woche = 2; woche <= 52; woche++)
            {
                if (monat == namonat)
                {
                    if (erstewoche == 0)
                    {
                        erstewoche = woche;
                    }
                    
                    var indexstart2 = new Array();
                    var indexende2 = new Array();
                    
                    wochesingle++;
                    indexstart2[woche] = ajahr+nmonat+nnatag+"01";
                    indexende2[woche] = ajahr+nmonat+nnetag+"24";
                    trace("belege indexstart["+woche+"] mit"+ indexstart2[woche]);
                    trace("belege indexende["+woche+"] mit"+ indexende2[woche]);
                }

               
            }

In dem Falle wäre das testenshalber der Monat 12 mit den Wochen 48, 49 ,50 ,51, 52, 53
Die ermittelt er auch und belegt das erstellte array mit dem erwünschten Index. DOch dann passiert folgendes wenn ich danach folgende Code verwende:

Code:
if(optionhandler == "single")
{
     for (var woche = erstewoche; woche <= (erstewoche+wochesingle); woche++)
     {
                    
         for (var index = indexstart2[woche]; index <= indexende2[woche]; index++)
         {
               woche_ges[woche] = Number(woche_ges[woche]) + Number(_root.daten_indexed[index]);
         }
      trace("belege indexstart["+woche+"] mit"+ indexstart2[woche]);
      trace("belege indexende["+woche+"] mit"+ indexende2[woche]);
     }
 }
Wenn ich hier jetzt versuche mir das Array ausgeben zu lassen, welche ja den selbigen wie oben entspräche, existieren nicht alle Werte sondern nur der letzte im Array, nur warum?

Liebe Grüße Joe
 
Hi,

poste bitte mal die .fla, damit ich das Testen kann.

Generenn dürfte es sinnvoller sein, die Abfrage
Code:
if (monat == namonat)
nicht innerhalb der Schleife, sondern außerhalb unterzubringen (weder "monat" noch "namonat" scheinen sich ja in der Schleife zu ändern). Du sparst Dir dadurch das Ausführen des Vergleiches für jeden Schleifendurchlauf.

Gruß
.
 
Das ganze ist etwas kompliziert, als ich es hier dargestellt habe... Ich habe eine Funktion die alle Wochen eines Jahres errechnet. In bestimmten Fällen brauche ich aber nur die Wochen eines Monats mit dem dazugehörigen Index über dem ich die Anzahl der Zugriffe ermittele.

Hier mal die Fla, obengenanntes Codestück befindet sich auf Zeile 1097.

Bitte beim Testen dieser nochmal das Datum auf 2007 zurückstellen, da keine Daten für 2008 existieren :=
 

Anhänge

  • diagramm.zip
    132,4 KB · Aufrufe: 13
Hi,

ok, vor 1200 Zeilen Code kapituliere ich. ^^ Auf die Schnelle habe ich noch nicht einmal herausgefunden, wo im im Frontend die von Dir zitierte Funktion aufrufe (das Ding hängt sich meist aufgrund von Scriptverlangsamungen auf).

Lass Dir bitte mal in beiden Schleifen die Variablen "woche", "erstewoche" und ggf. "wochesingle" ausgeben. Dazu nach Ende der erstel Schleife die Länge der Arrrays "indexstart2" und "indexende2". Wenn das Array in der ersten Schleife korrekt befüllt wird, sollten die Werte auch drinstehen; möglicherweise werden in der zweiten Schleife nicht alle Indizes durchlaufen, oder Du änderst die Werte zwischenzeitlich noch an anderer Stelle.

Gruß
.
 
hmm seltsam, bei mir läuft es zwar noch etwas langsam, aber aufhängen tut es sich nicht... Die Funktion wird aufgerufen, wenn du einen Monat anklickst bzw den Balken dieses. Vorher musst du momentan allerdings erst noch nach zeitlicher Abfolge ordnen, da die Funktion andersherum noch nicht implementiert ist.

Dann wird ermittelt welche Kalenderwochen der Monat beinhaltet und ein Index erzeugt, der im Prinzip das Datum darstellt. Also z.b. 2007 09 01 1 bis 2007 09 01 24 wäre ein Tag. So lassen sich bequem verschiedene Zeitabschnitte über ein Array berechnen.

Wenn ich mir die Werte ausgeben lasse, nachdem ich sie belegt habe funktionieren sie soweit. Wenn ich mir
Code:
trace("belege indexstart["+woche+"] mit"+ indexstart2[woche]);
funktioniert das wunderbar. Die Zuweisung funktioniert.

Allerdings ist das Array nachdem ich es mir komplett ausgeben lasse, nur mit dem letzten Wert belegt. Die vorhergehenden Schlüssel sind alle leer. Nur der letzte Schlüssel, in dem Falle 52, ist noch belegt.

Kann es sein, dass ich nicht ab einem beliebigen Schlüssen Werte in ein Array schreiben kann?
 
Inhalt indexstart innerhalb der Schleife:

indexstart[48] mit2007122601
indexende[48] mit2007120224
indexstart[49] mit2007120301
indexende[49] mit2007120924
indexstart[50] mit2007121001
indexende[50] mit2007121624
indexstart[51] mit2007121701
indexende[51] mit2007122324
indexstart[52] mit2007122401
indexende[52] mit2007123024

Außerhalb der Schleife:
Inhalt des Arrays indexstart = ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2007122401

Inhalte Schleife 2:
indexstart[48] mit
indexende[48] mit
indexstart[49] mit
indexende[49] mit
indexstart[50] mit
indexende[50] mit
indexstart[51] mit
indexende[51] mit
indexstart[52] mit2007122401
indexende[52] mit2007123024
indexstart[53] mit
indexende[53] mit

wtf?
 
Ah, ich bin ja auch Blind. ^^
Code:
                if (monat == namonat)
                {
                    if (erstewoche == 0)
                    {
                        erstewoche = woche;
                    }
                    
                    var indexstart2 = new Array();
                    var indexende2 = new Array();
                    
                    wochesingle++;
                    indexstart2[woche] = ajahr+nmonat+nnatag+"01";
                    indexende2[woche] = ajahr+nmonat+nnetag+"24";
                    trace("belege indexstart["+woche+"] mit"+ indexstart2[woche]);
                    trace("belege indexende["+woche+"] mit"+ indexende2[woche]);
                }
Immer, wenn Du die Arrays in der Schleife neu deklarierst (new Array), werden alle bisherigen Inhalte gelöscht, da ein neues Array erstellt wird.

Gruß
.
 

Neue Beiträge

Zurück