IsArray

  • Hi und guten abend
    Ich hab mal eine Frage zu IsArray, kann man auch rausbekommen wie viele Arrays es sind?

    Beispiel (nur gerad hingeschrieben ^^)
    [autoit]

    Dim $1[10]
    If IsArray ($1) Then MsgBox (0,"","");das sollte dann die anzahl ausgeben

    [/autoit]

    Also eigentlich will ich das mit StringSplit machen!

    mfg. Jam00

    Einmal editiert, zuletzt von Jam00 (17. Januar 2009 um 20:14)

  • Ich rate dir dennoch dich mit der Funktion Ubound anzufreunden...
    Denn 1. wird nicht überall im index 0 die anzahl mit übergeben (besonders bei UDFs) und vor allem in anderen Sprachen (!)
    2. Ist es ein viel besserer Programmierstil da du dann genau weist was du "willst" wenn du Ubound benutzt ;)

    Auf scriptsprache :D (muss jetzt sein^^)

    [autoit]

    $array[0] = Ubound($array)-1

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • [autoit]

    #include <Array.au3>

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

    $days = StringSplit("Sun,Mon,Tue,Wed,Thu,Fri,Sat", ",")
    _ArrayDisplay($days)

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

    Sleep(200)

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

    MsgBox(0, "", $days[0]) ; $days 0 enthält alle gefundenen Substrings, in dem Fall 7

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

    Sleep(200)

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

    MsgBox(0, "", UBound($days)) ; Ubound($days) gibt dir die Zahl an, wieviele Einträge in einem Array vorhanden sind.
    ; du kannst nachzählen :P, es sind 8, weil das erste Element, dass die Anzah der
    ; Einträge enthält mitgezählt wird

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

    Sleep(200)

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

    ; Um jetzt wieder auf die 7 Einträge zu kommen, muss man von den 8 nochmal 1 abziehen, also:

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

    MsgBox(0, "", UBound($days) - 1)

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

    ; jetzt hat man das selbe Ergebnis, wie bei $days[0] und man kann es immer verwenden, auch bei Funktionen, die ein Array
    ; zurückgeben, das nicht 0-Based ist

    [/autoit]

    Kapiert? ;)

  • Es ist im Prinzip ganz einfach, du musst nur verstehen wie ein Array aufgebaut ist:

    [autoit]

    Dim $array[5]

    [/autoit]

    Bedeutet
    1. $array = ein Array
    2. $array hat genau eine Dimension []
    3. $array hat einen Bereich von 5 (also im index 0-4 kann was stehen)

    Ubound kannst du nun mit verschiedenen Parametern benutzen:
    Der 1. ist einfach das array selbst mit dem 2. kannst du entweder:
    Prüfen wie viele Dimensionen das array hat =>

    [autoit]

    Ubound($array, 0)

    [/autoit]


    oder in welchem Bereich sich eine Dimension befindet, da unser array nur eine Dimension hat benutzt man es so:

    [autoit]

    Ubound($array, 1) ;(die 1 ist aber standard, kann also weggelassen werden)

    [/autoit]

    Ubound($array) gibt uns aber nun 5 aus d.h. wenn du eine schleife so benutzt:

    [autoit]

    for $i = 0 To Ubound($array)

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

    Next

    [/autoit]

    Dann wirst du einen Fehler bekommen da $array[$i] (wenn $i = 5 ist) du den bereich überschritten hast, also muss man von Ubound einfach 1 abziehen deswegen

    [autoit]

    for $i = 0 To Ubound($array) - 1

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

    Next

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    Einmal editiert, zuletzt von FireFlyer (17. Januar 2009 um 21:52)