Doppelt Ubound($a)

  • [autoit]

    Func Randomize()
    Dim $sort[GUICtrlRead($Input_Bis)] ;Erstellt ein Array mit einer Feldanzahl des Maximums, welches eingegeben wurde.

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

    if GUICtrlRead($Input_Von) >= GUICtrlRead($Input_Bis) Then
    MsgBox(0,"Randomize ERROR","Minimum ist hoeher oder gleich des Maximums")
    Else
    for $i = 0 to UBound($sort);GUICtrlRead($Input_Bis)
    _ArrayInsert($sort, $i, Random(GUICtrlRead($Input_Von),GUICtrlRead($Input_Bis), 1)) ;Testweise diesmal mit Insert anstatt _ArrayAdd(*,*)
    Next
    GUICtrlSetData($Input_Von, "Done")
    GUICtrlSetData($Input_Bis, "Done")
    GUICtrlSetState($Input_Von, $GUI_DISABLE)
    GUICtrlSetState($Input_Bis, $GUI_DISABLE)
    _ArrayDisplay($sort)
    EndIf
    EndFunc

    [/autoit]

    Warum werden hier immer die doppelte Anzahl an ArrayElementen erstellt als UBound($sort) definiert?

  • in dem array sind einige elemente leer oder?
    Das liegt dadran, dass du zuerst einen Array deklariert hast, aber durch _Arrayinsert jeweils ein Element hinzufügst.
    Wenn du einzelne Elemente des Arrays initialisieren willst, kannst du sie mit der Zuweisung:
    $sort[INDEX] = "Wert"
    belegen.

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Hi,

    ersetze

    [autoit]

    for $i = 0 to UBound($sort);GUICtrlRead($Input_Bis)
    _ArrayInsert($sort, $i, Random(GUICtrlRead($Input_Von),GUICtrlRead($Input_Bis), 1)) ;Testweise diesmal mit Insert anstatt _ArrayAdd(*,*)
    Next

    [/autoit]


    durch

    [autoit]

    for $i = 0 to UBound($sort);GUICtrlRead($Input_Bis)
    $sort [$i] = Random(GUICtrlRead($Input_Von),GUICtrlRead($Input_Bis), 1) ;Testweise diesmal mit Insert anstatt _ArrayAdd(*,*)
    Next

    [/autoit]

    ;-))
    Stefan

    2 Mal editiert, zuletzt von ojo (18. November 2009 um 15:25)