string2array

  • Hallo Gemeinde, 8|

    Beispiel:
    $t = WinGetClassList("","")
    MsgBox(0, "Text read was:", $t)

    Frage1: Wie lösche ich alles, was mehr als 1x in String $t vorkommt ?
    (Welche Elemente gibt es, ausser @LG)
    Frage2: Welche Elemente sind wie oft in $t vorhanden ? (ausser @LG)
    Frage3: Wie wandel ich den String $t in ein Array um ?

    Bitte nur direkte Antworten und keine Verweise etc.
    Vielen Dank @Berti

  • Leider ist mir auf die schnelle nix besseres eingefallen, geht bestimmt auch viiiiiiiiiel einfacher:

    Spoiler anzeigen
    [autoit]

    ;Includes
    #include <Array.au3>

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

    ;Optionen setzen
    Opt("WinTitleMatchMode", 2)

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

    ; Einlesen der ClassList und in Array speichern
    $arr_class_list = StringSplit(WinGetClassList("",""),@LF)

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

    ; Array mal anzeigen lassen
    _ArrayDisplay($arr_class_list)

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

    ; Anzahl der Arrayeinträge und löschen der ersten Eintrags mit der Anzahl
    $count = $arr_class_list[0]
    _ArrayDelete($arr_class_list,0)

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

    ;Leere Array Felder lösche ich mal raus
    While _ArraySearch($arr_class_list,"") <> -1
    $id = _ArraySearch($arr_class_list,"")
    _ArrayDelete($arr_class_list,$id)
    $count -= 1
    WEnd

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

    ; Array mal anzeigen lassen
    _ArrayDisplay($arr_class_list)
    MsgBox(0,"","Anzahl Einträge = " & $count)

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

    ; Meine Arrays für die Ausgabe
    Dim $arrText[1]
    Dim $arrCount[1]

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

    ;StartIndex
    $index = 1

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

    ; Aussortieren der doppelten und die Anzahl speichern
    Do
    _ArrayAdd($arrText,$arr_class_list[0])
    _ArrayAdd($arrCount,1)
    _ArrayDelete($arr_class_list,0)
    $count -= 1
    If $count = 0 Then ExitLoop
    While _ArraySearch($arr_class_list,$arrText[$index]) <> -1
    $id = _ArraySearch($arr_class_list,$arrText[$index])
    _ArrayDelete($arr_class_list,$id)
    $count -= 1
    $arrCount[$index] = $arrCount[$index] + 1
    WEnd
    $index += 1
    Until $count = 0
    _ArrayDelete($arrText,0)
    _ArrayDelete($arrCount,0)

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

    ; Neues Array für die Finale Ausgabe
    Dim $arrSum[$index]
    $index -= 1

    ;Array aus den beiden anderen Array füllen
    For $i = 0 to $index
    $arrSum[$i] = $arrText[$i] & " = " & $arrCount[$i]
    Next

    ;Ausgabe
    _ArrayDisplay($arrSum)

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • hallo Poldi, :thumbup:

    Frage3: ok
    StringSplit zum erstellen des Arrays - darauf muss man erst mal kommen.

    Vielen Dank,
    Gruss @Berti


    Zitat

    geht bestimmt auch viiiiiiiiiel einfacher

    Wie?

  • Wie es einfacher geht, hatte nur 5 min. zeit als ich das zusammen gebastelt habe :) darum gehe ich einfach mal davon aus das es einfacher geht

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)