Multidimensionale Arrays anzeigen

  • _ArrayDisplay zeigt nur 2D-Arrays...

    Ich brauchte eine Möglichkeit, Arrays anzuzeigen.
    Und zwar egal, wie viele Dimensionen, oder ob ein Element selber ein Array ist...

    Das geht eigentlich nur mit einem Treeview.
    Und so hab ich mir die Funktion _ArrayDisplayTree geschrieben.

    Ist rekursiv, d.h. es werden alle Elemente angezeigt, auch wenn es sich um ein Array im Array im Array usw. handelt.

    So wird z.b. ein 5D-Array dargestellt (nur first levels ausgeklappt):
    (grün sind die Unterdimensionen, blau die tatsächlichen Elemente - zwischen < und > steht der Wert des Elements)
    autoit.de/wcf/attachment/4323/

    autoit.de/wcf/attachment/4324/
    Beispiele sind dabei...

    lgE

  • Finde ich auch !!!

    Nur jetzt noch ein super Beispiel wozu man(n) und Frau es einsetzen kann, dann könnte man sich versuchen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi,
    nett gemacht :).

    Aber wenn ich ehrlich bin, würde mir jetzt kein Grund einfallen 5-Dimensionale Arrays zu benutzen, für was braucht man so viele Dimensionen? ;)
    In AutoIt braucht man sie eher noch, weil es keine Records usw. gibt, habe sie aber noch nie benutzt.

  • Also ich benutze häufig _ArrayDisplay zum debuggen.
    Allerdings benutze ich auch oft Arrays mit 3 Dimensionen oder habe manchmal Arrays im Array
    und das schafft _ArrayDisplay nicht mehr...

    Dieses Script hab ich eigentlich nur zum debuggen gemacht.
    Eine andere Verwendungsmöglichkeit hab ich auch noch nicht gefunden ;)

    mehr als 3 Arraydimensionen hab ich auch noch nie benötigt, aber Autoit schafft insgesammt 64 und das sollte auch mein Script schaffen, hab ich aber nicht ausprobiert ;)

    lgE

  • Ach ja!

    Interessant dürfte noch folgendes sein:
    Mit Eval kann man eine Variable auslesen, welche man mit einem String definiert:

    [autoit]

    Global $Var=1
    MsgBox(0,"",Eval("Var"))

    [/autoit]

    Dies funktioniert allerdings nicht mit Arrays; Da kann man aber Execute verwenden:

    [autoit]

    Global $Var[1]=[1]
    MsgBox(0,"",Execute("$Var[0]"))

    [/autoit]

    kann vielleicht der eine oder andere mal gebrauchen...

    lgE

  • Super! :thumbup:
    Da ich demnächst vorhabe 3D-Arrays zu benutzen, ist das genial (Wozu cih die benutzen will, muss ich mir aber noch überlegen :D)