Brauche Hilfe Bei Arrays

  • Hi @all,

    Ich brauche Hilfe beiArrays (Wie der Titel schon sagt^^).Also das Skript läuft folgender maßen ab man gibt eine Zahl ein dan einen namen und dann soll das Skript das ausgeben meine probleme: er gibt nur bis zur neun aus und es gibt keine leer zeichen zwischen namenund zahl hoffe ihr könnt mir helfen
    Hier das skript:

    Spoiler anzeigen
    [autoit]

    $1 = InputBox("", "Gib eine Zahl ein (max 20)")
    If $1 > 0 Then
    $2 = InputBox("", "Gib einen Namen ein ")
    Dim $name[$1]
    $name[0] = $2 & ( 0)
    $name[1] = $2 & ( 1)
    $name[2] = $2 & ( 2)
    $name[3] = $2 & ( 3)
    $name[4] = $2 & ( 4)
    $name[5] = $2 & ( 5)
    $name[6] = $2 & ( 6)
    $name[7] = $2 & ( 7)
    $name[8] = $2 & ( 8)
    $name[9] = $2 & ( 9)
    If $1 = 11 Then
    _ArrayAdd($name, $2 & ("10"))
    If $1 = 12 Then
    _ArrayAdd($name, $2 & ("10"))
    _ArrayAdd($name, $2 & ("11"))
    If $1 = 13 Then
    _ArrayAdd($name, $2 & (10))
    _ArrayAdd($name, $2 & (11))
    _ArrayAdd($name, $2 & (12))
    If $1 = 14 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    If $1 = 15 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    _ArrayAdd($name, $2 & ( 14))
    If $1 = 16 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    _ArrayAdd($name, $2 & ( 14))
    _ArrayAdd($name, $2 & ( 15))
    If $1 = 17 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    _ArrayAdd($name, $2 & ( 14))
    _ArrayAdd($name, $2 & ( 15))
    _ArrayAdd($name, $2 & ( 16))
    If $1 = 18 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    _ArrayAdd($name, $2 & ( 14))
    _ArrayAdd($name, $2 & ( 15))
    _ArrayAdd($name, $2 & ( 16))
    _ArrayAdd($name, $2 & ( 17))
    If $1 = 19 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    _ArrayAdd($name, $2 & ( 14))
    _ArrayAdd($name, $2 & ( 15))
    _ArrayAdd($name, $2 & ( 16))
    _ArrayAdd($name, $2 & ( 17))
    _ArrayAdd($name, $2 & ( 18))
    If $1 = 20 Then
    _ArrayAdd($name, $2 & ( 10))
    _ArrayAdd($name, $2 & ( 11))
    _ArrayAdd($name, $2 & ( 12))
    _ArrayAdd($name, $2 & ( 13))
    _ArrayAdd($name, $2 & ( 14))
    _ArrayAdd($name, $2 & ( 15))
    _ArrayAdd($name, $2 & ( 16))
    _ArrayAdd($name, $2 & ( 17))
    _ArrayAdd($name, $2 & ( 18))
    _ArrayAdd($name, $2 & ( 19))
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    EndIf
    Else
    MsgBox(20, "Fehler", "Das ist keine Zahl")
    EndIf
    _ArrayDisplay($name)

    [/autoit]

    Einmal editiert, zuletzt von tomtomone96 (13. Oktober 2010 um 10:54)

  • Also ich sehe den Sinn dahinter auch nicht, aber probier das mal aus.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Global $aName[1]

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

    $sNumber = InputBox("", "Gib eine Zahl ein (max 20)")
    If StringIsInt($sNumber) Then
    ReDim $aName[$sNumber]
    $sName = InputBox("", "Gib einen Namen ein ")
    For $i = 0 To 9
    $aName[$i] = $sName & " " & $i
    Next
    For $i = 11 To $sNumber
    _ArrayAdd($aName, $sName & " " & $i - 1)
    Next
    Else
    MsgBox(20, "Fehler", "Das ist keine Zahl")
    EndIf
    _ArrayDisplay($aName)

    [/autoit]
  • der sinn dahinter spielt hier zu diesem zeitpunkt keine rolle^^
    @m-obi
    danke erstmal aber deins funktioniert auch nich so richtig denn wenn man den array anzeigen lässt und vorher als zahl 40 hat dan sind zeile 0-9 und 40-69 gefüllt der rest ist leer es sind zwar 40 zeilen soz gefüllt aber es sind dennoch immernoch "leerzeilen"

  • Ich hab es so gemacht, wie dein obiges script auch macht, nur kürzer. Du musst schon sagen was du genau willst.

  • "einfach nur" das ich meinetwegen z.b.name 0 bis name 40 als variable deklariert hab und nicht $1 $2 ... einzeln deklarieren muss verstehst du

  • Also so:

    [autoit]

    #include <Array.au3>

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

    Global $aName[1]

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

    $sNumber = InputBox("", "Gib eine Zahl ein (max 20)")
    $sName = InputBox("", "Gib einen Namen ein ")
    If StringIsInt($sNumber) Then
    ReDim $aName[$sNumber]
    For $i = 0 To $sNumber - 1
    $aName[$i] = $sName & " " & $i + 1
    Next
    Else
    MsgBox(20, "Fehler", "Das ist keine Zahl")
    EndIf
    _ArrayDisplay($aName)

    [/autoit]


    Übrigens wenn du mehrere Variablen hast dann würde ich Arrays arbeiten oder mit Eval in ner Schleife.

  • 2 Fragen
    kannst du mir den teil erklären:

    Spoiler anzeigen
    [autoit]

    If StringIsInt($sNumber) Then ReDim $aName[$sNumber]

    [/autoit]


    und
    was meinst du mit eval in einer schleife??

  • Du willst ja sicherstellen das der User eine Zahl eingibt und keine Buchstaben, also prüfst du die Eingabe mit StringIsInt, also ob der String ein integer ist. Und mit ReDim veränderst du die Größe eines bestehenden Arrays. Schau doch einfach in die Hilfe rein, auch zu Eval.