Brauche eben einen Schubs..

  • Hallo,

    ich bastle mal wieder rum und habe da ein verständnis Problem:

    Fängt ein Array Normalweise nicht bei 0 an?
    Wenn ich nun 5 Objekte in einem Array speichern will deklariere ich das Array so:

    [autoit]

    Dim $array[4]

    [/autoit]

    0 bis 4 sind ja 5...

    So, nun habe ich eine Schleife die von 0 - 4 Zählt und nach und nach etwas im Array speichert... doch ich bekomme dann eine Fehlermeldung das mein Array zu klein sei:

    [autoit]

    Global $signs
    Global $array[5]
    Global $pwd
    $signs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

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

    _captcha()

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

    Func _captcha()
    for $a = 0 to 4
    $array[$a]=StringMid($signs,Random(0,62),1)
    Next
    $pwd = $array[0]&$array[1]&$array[2]&$array[3]&$array[4]
    MsgBox(0,"",$pwd)
    EndFunc

    [/autoit]

    Also habe ich das Array mit dem Namen $array auf 5 gesetzt... das sind aber dann ja schon 6 mögliche Speicherplätze aber erst dann
    läuft es korrekt.... wieso?

    PS: Bevor ich es vergesse, kann ich die Dimensionen eines Arrays auch während der Laufzeit ändern?

    Einmal editiert, zuletzt von studroa (14. Januar 2010 um 14:59)

  • Hi,

    Du hast die Antwort schon selbst gegeben:

    [4] bedeutet nicht Nummerierung sondern Anzahl der Elemente im Array.

    Dim $array [4] heisst, dass Dein Array 4 Elemente hat -> 0,1,2,3 = 4 Elemente

    Wenn Dein Array 5 Elemente haben soll dann musst Du auch

    Dim $array [5] verwenden -> 0,1,2,3,4 = 5 Elemente

    Zitat

    Bevor ich es vergesse, kann ich die Dimensionen eines Arrays auch während der Laufzeit ändern?

    Ja, schau Dir mal ReDim an.

    ;-))
    Stefan

  • das ganze Ding geht aber auch ohne Array:

    Spoiler anzeigen
    [autoit]

    Global $signs
    Global $pwd
    $signs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

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

    _captcha()

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

    Func _captcha()
    for $a = 1 to 5
    $pwd&=StringMid($signs,Random(0,StringLen($signs)),1)
    Next
    MsgBox(0,"",$pwd)
    EndFunc

    [/autoit]

    gruß
    Pretrojaner