String an Item in For Schleife anhängen

  • Hallo,
    hat jemand ne Idee wie ich folgendes nach jedem Eintrag der ListBox anfügen kann?
    "& " | " & $Game"

    Das Quasi das Item in die Listbox eingefügt wird und dem String dann noch das oben genannte angefügt wird...


    Hier der Code:

    $markiert_index = _GUICtrlListBox_GetCurSel($List1)
    $markiert_name = _GUICtrlListBox_GetText($List1, $markiert_index)
    $Files=_FileListToArray(@UserProfileDir & "\Dropbox\GameSync\Games")
    $Game = IniRead(@UserProfileDir & "\Dropbox\***\DATA\" & $markiert_name & ".ini","***", $markiert_name, "")
    For $i = 1 To $Files[0]
    GUICtrlSetData($List1, $Files[$i] & " | " & $Game)
    Next


    PS: Ich hab mit Absicht auf die "Autoit Quellcode" Funktion verzichtet, das mein Chrome irgendwie die Syntax zerstört und somit alles in einer Zeile angezeigt wird!

  • Also wenn du alle Items der Listbox hast und dann das daran hängen willst, dann kannst du das so machen:

    [autoit]

    $Inhalt[$i] &= "& " | " & $Game"

    [/autoit]


    anschließens den Inhalt der Listbox löschen und neu schreiben. Ich weiß nicht ob es einfach geht und auch nicht ob ich deine Absicht richtig verstanden habe, aber so würde ich es machen.

    mfg
    Hauke

  • Das übersteigt mein Autoit Vermögen, kannst dus mal schnell auf mein Codeschnipsel anwenden? :S

  • Uff, da musste ich selbst ermal in der Hilfe nachgucken wie das alles noch ging, habs aber hinbekommen:

    Spoiler anzeigen
    [autoit]

    Local $ListItem[6], $Read[6]
    $hGui = GUICreate("TEST", 500, 500)
    $Button = GUICtrlCreateButton("Text hinzufügen", 330, 10, 100, 20)
    $Liste = GUICtrlCreateListView("Liste ", 10, 10, 300, 300) ; Erzeugt eine Liste
    For $i = 1 To 5
    $ListItem[$i] = GUICtrlCreateListViewItem("ITEM" & $i, $Liste) ; Erzeigt Einträge in der Liste
    Next
    GUISetState()
    while 1
    $msg = GUIGetMsg()
    Select
    case $msg = -3 ; -3 heißt, dass das Kreuz gedrückt wurde
    exit
    case $msg = $Button
    For $i = 1 To 5
    $Read[$i] = GUICtrlRead($ListItem[$i]) ; Liest einen Eintrag aus
    $ReadSplit = StringSplit($Read[$i], "|") ; Splittet ihn, weil Standartmäßig ein | angehängt ist
    $Read[$i] = $ReadSplit[1] & " - Game" ; Fügt dem Eintrag ein - Game hinzu
    GUICtrlDelete($ListItem[$i]) ; Löscht den bisherigen Eintrag
    $ListItem[$i] = GUICtrlCreateListViewItem($Read[$i], $Liste) ; Erstellt einen neuen Eintrag
    Next
    EndSelect
    WEnd

    [/autoit]


    also einen Senkrechten Strich kannst du nicht machen, weil das bedeutet, dass der Eintrag danach in der nächsten Spalte ist. Alternativ kannst du aber alle anderen Zeichen nehmen.

    mfg
    Hauke

  • Danke, klappt nur leider nicht :(

    Ich hab das so in mein Script eingebaut:


    $Files = _FileListToArray(@UserProfileDir & "\***\GameSync\Games")
    For $i = 1 To $Files[0]
    GUICtrlSetData($List1, $Files[$i])
    $Read[$i] = GUICtrlRead($ListItem[$i]) ; Liest einen Eintrag aus
    $ReadSplit = StringSplit($Read[$i], "|") ; Splittet ihn, weil Standartmäßig ein | angehängt ist
    $Read[$i] = $ReadSplit[1] & " - Game" ; Fügt dem Eintrag ein - Game hinzu
    GUICtrlDelete($ListItem[$i]) ; Löscht den bisherigen Eintrag
    $ListItem[$i] = GUICtrlCreateListViewItem($Read[$i], $List1) ; Erstellt einen neuen Eintrag
    Next

  • ??? hm. Inwiefern geht es nicht, also gibt er einen Error aus oder passiert einfach nichts?

    Wozu Zeile 3?

    Ansonsten:
    - Liest er überhaupt etwas in $Files[] ein, oder ist das Array leer? Weil dann eventuell File[0] eben 0 oder "" wäre und somit die Schleife nicht ausgeführt werden würde.

    mfg
    Hauke