Array Problem

  • hi, ich versuche derzeit ein kleines tool zu erstellen, das 12 stellige zufallsbuchstaben erstellt und sie in ein array schreibt.
    doch leider wird das array immer größer und bleibt nicht bei seiner anfangsgröße . hat jemand eine idee an was es liegt?

    [autoit]

    $Stellen = 12
    Global $Email[2]
    Global $Key
    For $j = 0 to UBound($Email)
    For $i = 1 to $Stellen
    $Random = Random(1,4,1)
    Select
    Case $Random = 1
    $Key &= Chr(Random(Asc("a"), Asc("z"), 1))
    Case $Random = 2
    $Key &= Chr(Random(Asc("A"), Asc("Z"), 1))
    Case $Random = 3 or $Random = 4
    $Key &= Random(0,9,1)
    EndSelect
    Next
    _ArrayInsert($Email, $j, $Key)
    MsgBox(0,"test", $key)
    $Key = ""
    Next
    _ArrayDisplay($Email)

    [/autoit]
  • Das Problem ist, dass du mit _ArrayInsert immer ein neues Element an das Array anhängst. Somit wird das Array grösser und dadurch wird natürlich auch UBound grösser und so hält deine Schleife niemals an. Ich würde das so machen:

    Spoiler anzeigen
    [autoit]


    $Stellen = 12
    Global $Email[2]
    Global $Key

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

    For $j = 0 To UBound($Email) - 1 ; -1! (Arrays sind 0-basiert. UBound nicht.)
    For $i = 1 To $Stellen
    $Random = Random(1, 4, 1)
    Select
    Case $Random = 1
    $Key &= Chr(Random(Asc("a"), Asc("z"), 1))
    Case $Random = 2
    $Key &= Chr(Random(Asc("A"), Asc("Z"), 1))
    Case $Random = 3 Or $Random = 4
    $Key &= Random(0, 9, 1)
    EndSelect
    Next
    ;_ArrayInsert($Email, $j, $Key)
    $Email[$j] = $Key ; Du hast das Array ja schon gemacht. Da brauchst du nicht neue Elemente einzufügen.
    MsgBox(0, "test", $Key)
    $Key = ""
    Next
    _ArrayDisplay($Email)

    [/autoit]


    Gruss Shadowigor

  • _ArrayInsert
    Fügt einen neuen String an der festgelegten Position in das Array ein.


    Ich wäre hier fürs Schließen, da wohl offensichtlich ist, was mit dem Script bezweckt wird...

    Edit BugFix: Sehe ich genauso. [CLOSED]

    Einmal editiert, zuletzt von BugFix (30. Juli 2012 um 09:35)