Ich kann Array nicht erweitern ...

  • Hallo liebe Gemeinde,

    ich glaube ich habe jetzt schon wieder zuviel mit AutoIT gemacht, so dass ich den Wald vor lauter Bäumen nicht mehr sehe. Mein Problem:

    Ich definiere im Header ein Array:

    Global $array[500]

    Anschließend wird dieses Array (2-Dimensional) mit Werten aus einer MSSQL-Datanbank gefüllt. Bei meinen tests sind es jetzt momentan 20 Datensätze die reingeschrieben werden. Den letzten Wert erreiche ich also über

    $array[19][$x]

    Jetzt ist es aber so, das ich das Array nach dem Füllen aus der SQL-DB mit weiteren Werten erweitern will. Das heßt doch für mich, dass ich als nächstes in $array[20][0] schreib muss, oder? Das skript schmiert aber an der Position ab und meldet folgendes:

    Array variable has incorrect number of subscripts or subscript dimension range exceeded.

    Kann mir einer sagen was ich falsch mache?


    gruß

    nasgul

    Einmal editiert, zuletzt von nasgul (22. April 2008 um 20:22)

    • Offizieller Beitrag

    Hallo

    Array variable has incorrect number of subscripts or subscript dimension range exceeded.
    bedeutet, dass das Array nicht genug Indexe/Dimensionen (kann man Index erweitern?! oO, egal^^) vorhanden sind.
    Benutze dafür einfach ReDim, Probier das mal so aus, anstatt Random halt dein SQLite befehl..

    [autoit]

    #include<Array.au3>
    Global $array[1][2] ;Egal wie groß...

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To 25 ;0-25 sind also Index von einer größe 26!
    ReDim $array[$i+1][2] ;Definiert die größe des Arrays neu, und beinhaltet 2 Dimensionen
    ;Array wird definiert
    $array[$i][0] = Random(0,100,1)
    $array[$i][1] = Random(0,100,1)
    Next

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($array)

    [/autoit]

    Mfg Spider

    • Offizieller Beitrag

    Wenn du ein Array dynamisch erweitern willst, hast du aber bei einem 2D-Array sicher die 2.te Dimension mit fester Anzahl, also z.B. $Array[n][2]

    Dynamisch zuweisen geht dann so:

    [autoit]

    ; Deklaration
    Global $Array[1][2] ; ein Element muß auf jeden Fall deklariert werden - [0] geht nicht
    ; Zuweisung
    $Array[Ubound($Array)-1][0] = 'Wert 1_0'
    $Array[Ubound($Array)-1][1] = 'Wert 1_1'
    ; Array vergrößern
    ReDim $Array[Ubound($Array)+1][2]

    [/autoit]
  • hallo ihr zwei,

    also was ihr alles wißt verwundert mich doch immer wieder wenn ich hier reinschaue! mein gedankenfehler war, dass ich dachte mit $array[500] ein so großes array geschaffen zu haben, dass ich neben den 20 datensätzen ohne problem bis zur 500 hoch auffüllen könnte. nach dem auslesen der datenbank überschreib ich aber glaube ich dieses array mit einem anderen ... weiß nicht ob man das so sagt. ich denke das damit dann die array-größe auf die anzahl der datensätze aus der datenbank gesetzt wird.

    mit ReDim ist das Problem jetzt gelöst. Ich danke euch vielmals ....


    gruß

    nasgul