Selektierte Einträge aus Listenfeld löschen

  • Wie löse ich dieses problem.

    Ich möchte alle selektierten Dateien in einer Listenfeld mittels einem bestimmten Command löschen.

    Die ausgewählten Einträge müssen jedoch zuvor noch beschnitten werden.

    Momentan sieht es so aus:

    [autoit]


    Func _DeleteFile()
    Local $d64dateiauswahl = StringLower(_GUICtrlListView_GetSelectedIndices($list_dir, True))
    Local $rechterString = StringInStr($d64dateiauswahl, '"', 0, -1)
    Local $linkerString = StringMid($d64dateiauswahl, 7, $rechterString - 6)
    If $linkerString[0] = 0 Then Return MsgBox(16, "Hinweis", "Es wurden keine Dateien zum löschen ausgewählt.")
    For $i = 1 To $linkerString[0]
    RunWait(@ComSpec & " /c c1541.exe " & '"' & $dateipfad & '" -delete ' & $linkerString[$i], "", @SW_HIDE)
    Next
    _ImageOpen()
    EndFunc

    [/autoit]

    Das funktioniert aber nicht, da "linkerString" kein Array ist.


    So hab ichs auch schon versucht:

    [autoit]


    Func _DeleteFile()
    Local $d64dateiauswahl = StringLower($list_dir)
    Local $rechterString = StringInStr($d64dateiauswahl, '"', 0, -1)
    Local $linkerString = _GUICtrlListView_GetSelectedIndices(StringMid($d64dateiauswahl, 7, $rechterString - 6), True)
    If $linkerString[0] = 0 Then Return MsgBox(16, "Hinweis", "Es wurden keine Dateien zum löschen ausgewählt.")
    For $i = 1 To $linkerString[0]
    RunWait(@ComSpec & " /c c1541.exe " & '"' & $dateipfad & '" -delete ' & $linkerString[$i], "", @SW_HIDE)
    Next
    _ImageOpen()
    EndFunc

    [/autoit]


    "$list_dir" ist mein Listenfeld.

    Einmal editiert, zuletzt von DerSchatten (19. August 2011 um 14:29)

  • _GUICtrlListView_GetSelectedIndices reicht nicht, um den text aus den Listview zu lesen..

    Du musst noch den text auslesen z.B. mit _GUICtrlListView_GetItemText($hWnd, $iIndex[, $iSubItem = 0])

    $iIndex ist dann der Wert, der von _GUICtrlListView_GetSelectedIndices geliefert wird !

    Lg,
    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Muß ich jetzt zuerst den Text mit GetItemTextString auslesen oder zuerst _GUICtrlListView_GetSelectedIndices verwenden?

    Damit hakt es nämlich trotzdem noch wo:

    [autoit]


    Func _DeleteFile()
    Local $d64dateiauswahl = _GUICtrlListView_GetSelectedIndices(StringLower($list_dir), True)
    Local $rechterString = StringInStr($d64dateiauswahl, '"', 0, -1)
    Local $linkerString = StringMid($d64dateiauswahl, 7, $rechterString - 6)
    If $d64dateiauswahl[0] = 0 Then Return MsgBox(16, "Hinweis", "Es wurden keine Dateien zum löschen ausgewählt.")
    For $i = 1 To $d64dateiauswahl[0]
    RunWait(@ComSpec & " /c c1541.exe " & '"' & $dateipfad & '" -delete ' & _GUICtrlListView_GetItemTextString($list_dir, $d64dateiauswahl[$i]), "", @SW_HIDE)
    Next
    _ImageOpen()
    EndFunc

    [/autoit]

    Er läuft mir immer in die msgbox-Ausgabe hinein, so als wäre nichts ausgewählt.

    Abgesehen davon wie bekomme ich das mit meinen zugeschnittenen Strings dann hin?

    2 Mal editiert, zuletzt von DerSchatten (19. August 2011 um 15:56)

  • ich würde erst _GUICtrlListView_GetSelectedIndices
    dann hast du eine liste der ausgewählten items..

    Dann mit GetItemTextString die item texte auslesen und weiter verarbeiten.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    • Offizieller Beitrag
    [autoit]

    _GUICtrlListView_GetSelectedIndices(StringLower($list_dir), True)

    [/autoit]

    Welchen Sinn soll das haben? Das ContolID oder Controlhandle in Kleinbuchstaben umzuwandeln.
    StringLower gehört da nicht hin.

    Die beiden daruffolgenden Zeilen:

    [autoit]

    Local $rechterString = StringInStr($d64dateiauswahl, '"', 0, -1)
    Local $linkerString = StringMid($d64dateiauswahl, 7, $rechterString - 6)

    [/autoit]


    können nicht funtionieren, $d64dateiauswahl ist bei Erfolg der vorhegehenden Zeile ein Array.
    Du benutzt es aber wie eine Variable. :!:
    Edit:
    Ausserdem sind die beiden Zeilen Sinnfrei, da $d64dateiauswahl ein Array mit den Idexes der Auswahl zurückliefert und nicht
    den Text des Items.

    • Offizieller Beitrag

    Ich habe keinen Antrieb, mir die Funktionsweise deines Scriptes auszudenken.
    Da ich kein testfähighes Script habe und meine Wahrsagerin gerade Urlaub hat, wirst du dir schon selbst helfen müssen.
    Oder du wartest das sich jemand ein Paar Stunden hinsetzt, um ein Script um deinen Codefetzen herum zu bauen.

    Wer schnelle Hilfe will, der muß den Helfern helfen, dir helfen zu können, ohne dir alles aus der Nase ziehen zu müssen.