Dictionary dynamsch erstellen

  • Hallo!

    Ich stehe wiedermal an und hoffe das Ihr mir helfen könnt! Die Forumsuche hat mir leider keine Ergebnisse gebracht!

    Ich würde gerne Dictionary's dynamisch erzeugen, doch ich weiß nicht ob und wie das geht
    Momentan erstelle ich ein "statisches" Objekt so:

    [autoit]

    $dback = ObjCreate("Scripting.Dictionary")

    [/autoit]

    Jetzt würde ich aber für dynamische Kategorien (werden durch den Benutzer erzeugt = weiß nicht wie viele es geben wird) ein eigenes Dictionary benötigen. Am Ende beinhaltet des Dictionary (=Kategorie) viele Daten!
    Dadurch ich kann es nicht vorab hardcodet erzeugen.

    Ein Array fällt leider aus - das wäre für meine Aufgabenstellung mehr sehr schwer möglich!

    vielen Dank!
    Racer

    Einmal editiert, zuletzt von Racer (7. August 2014 um 19:24)

    • Offizieller Beitrag

    Jetzt würde ich aber für dynamische Kategorien (werden durch den Benutzer erzeugt = weiß nicht wie viele es geben wird) ein eigenes Dictionary benötigen. Am Ende beinhaltet des Dictionary (=Kategorie) viele Daten!

    Also soll es
    - nur EIN Dictionary sein und die Schlüssel-Wert-Paare erzeugen die Nutzer?

    Ein Array fällt leider aus - das wäre für meine Aufgabenstellung mehr sehr schwer möglich!


    - Wieso denn das? Mit einem Array kannst du auch erledigen, was mit einem Dictionary geht. ;)

  • [autoit]

    Local $List = ObjCreate("System.Collections.ArrayList")
    For $i=0 To 3
    $List.add(ObjCreate("Scripting.Dictionary"))
    For $j=0 To 100
    $List.Item($i).add($j, $j)
    Next
    Next

    [/autoit]

    So müsste es gehen.

  • Vielen Dank für Eure Antwort!

    BugFix : Nein, eben nicht! ich brauche für jede Kategorie (z. Schuhe, Hosen, Hemden,...) ein eigenes Dictionary! Ich mag Array's, nur manchmal sind sie einfach nicht gut zum Handhaben, insnbesonders wenn einzelen Elemente in großen Datenmengen (>10000) gesucht werden soll. Und da noch querverweise....da sind die Dic's viel schneller!


    Ich habe jetzt eine Lösung gefunden (nach langer Internetsuchen):

    Beipiel:

    [autoit]


    Dim $dic[4]
    $dic[1] = "eins"
    $dic[2] = "zwei"
    $dic[3] = "drei"

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

    for $i = 1 to 3
    Assign ($dic[$i] , ObjCreate("Scripting.Dictionary"))
    next

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

    $eins.add("eins","erstes Dic")
    $zwei.add("zwei","zweites Dic")
    $drei.add("drei","drittes Dic")

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

    msgbox (0 , "Ergebnis", $eins.item("eins") & @crlf & $zwei.item("zwei") & @crlf & $drei.item("drei"))

    [/autoit]

    @Tolleule: hmmm...sieht interessant aus! Muss werde ich mir auch ansehen

    vielen Dank!

  • Wenn ich deinen Code jetzt richtig verstehe, wären, glaube ich, Maps ideal für dich. Gibt es seit der Beta 3.3.13.4, lad dir einfach mal die aktuelle Beta runter und probier mal die Maps aus, bevor du mit Assign rumhantierst.

    Edit: Hier mal ein Beispiel zu Maps: http://www.autoitscript.com/forum/topic/16…a/#entry1185006

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Wenn ich deinen Code jetzt richtig verstehe, wären, glaube ich, Maps ideal für dich. Gibt es seit der Beta 3.3.13.4, lad dir einfach mal die aktuelle Beta runter und probier mal die Maps aus, bevor du mit Assign rumhantierst.

    Edit: Hier mal ein Beispiel zu Maps: http://www.autoitscript.com/forum/topic/16…a/#entry1185006

    Ohne das ich mich jetzt mit Maps auskenne, sieht das Beispiel schon sehr interessant aus! Das werde ich mir mal in Ruhe geben!

    Vielen Dank!

    @all: Ihr seit alle Spitze - so ein gutes Supportforum gibt es selten!!