Problem mit Array!?!?

  • Ich habe eine While-Schleife geschrieben, die eigentlich perfekt funktioniert. Aber nur, wenn man macht, was sie will. Und genau das ist das Problem.
    Die Schleife verarbeitet ein 2D-Array.

    Spoiler anzeigen
    [autoit]


    While Not $save_array[0][0] = ""
    _ArrayDisplay($save_array)
    ;Dank der Anzeige funktioniert es nun immer. Aber was kann ich anstatt der Anzeige nehmen?? Es soll nicht sichtbar sein...
    If $save_array[0][0] = "Quest" Then
    $toolbar = _GUICtrlToolbar_FindToolbar("TES Construction Set", "")
    _GUICtrlToolbar_ClickIndex($toolbar, 21)
    WinWait("Quest")
    ControlSend("Quest", "", 2064, "{DOWN " & $save_array[0][1] -1 & "}")
    _ArrayDelete($save_array, 0)
    ElseIf $save_array[0][0] = "Skript" Then
    ;~ ...
    _ArrayDelete($save_array, 0)
    ElseIf $save_array[0][0] = "Dialog" Then
    $toolbar = _GUICtrlToolbar_FindToolbar("TES Construction Set", "")
    _GUICtrlToolbar_ClickIndex($toolbar, 22)
    WinWait("Dialogue")
    ControlSend("Dialogue", "", 1448, "{DOWN " & $save_array[0][1] -1 & "}")
    _ArrayDelete($save_array, 0)
    EndIf
    Sleep(500)
    WEnd

    [/autoit]


    Aus bestimmten Gründen muss ich vor einer bestimmten Funktion Fenster(Dialog, Quest, Skript) schließen. Da ich diese anch der Funktion aufrufen will, speichere ich sie im Array(Element $i,0 = Fensterart; Element $i,1 = Info)
    Die Schleife übernimmt den Wiederaufruf.
    Getestet habe ich das mit einem Questfenster und einem Dialogfenster. Wenn ich das Questfenster zuerst öffne und dann das Dialogfenster, wird durch die Schleife nur das Dialogfenster geöffnet, obwohl beide im Array stehen.
    Wenn ich das Dialogfenster zuerst öffne und danach das Questfenster, werden beide korrekt angezeigt.
    Ich verstehe bloß nicht warum.
    Kann mir da jemand helfen?

    Einmal editiert, zuletzt von penta.phoenix (3. Februar 2009 um 22:44)

  • Dim $save_array[101][2]
    Alle anderen Variablen werden erst in der Schleife erzeugt.

    Das komplette Skript ist über 1000 Zeilen lang. Abgesehen davon ist es völlig egal.
    Der Fehler liegt in der Schleife, da sie den Fehler produziert.
    Wie gesagt, wenn ich zuerst das Dialogfenster geöffnet habe und danach das Questfenster öffne, funktioniert es problemlos.
    Auch wenn ich mir das Array vor dem Wiederherstellen der Fenster zeigen lasse, stimmt alles.
    Es hängt an der Schleife, aber ich habe keine Ahnung, wieso.

    Edit: Ich hab grad ne Möglichkeit gefunden, jetzt muss ich das nur sauberer hinbekommen, kann ja schlecht jedesmal das Array anzeigen lassen.
    Skript editiert!!

    Einmal editiert, zuletzt von penta.phoenix (3. Februar 2009 um 22:43)