ListViewItem - Ich kann den Text nicht auslesen

  • [autoit]


    $handle = ControlGetHandle("tecra's Mod Translator", "", "[NAME:listViewScript]")
    ;~ MsgBox(0, "tecra handle", $handle)
    $mod = WinGetText("tecra's Mod Translator")
    $mod = _StringExplode($mod, ".esp", 1)
    ;~ MsgBox(0, "", $mod[0])
    $ende = _GUICtrlListView_GetItemCount($handle)
    ;~ MsgBox(0, "Skripte", $ende)
    MsgBox(0, "", _GUICtrlListView_GetItemText($handle, 0)) ;ist "", sollte "M" sein
    For $i = 0 To $ende -1
    $text = _GUICtrlListView_GetItemText($handle, $i)
    MsgBox(0, $i, $text) ;ist auch "", sollte entweder "M", "X" oder "-" sein, je nach Item
    If $text = "M" Then
    $name = _GUICtrlListView_GetItemText($handle, $i, 1)
    MsgBox(0, "3", $name) ;wird nie erreicht, da $text = "" - und das immer
    _ArrayAdd($skripte, $name)
    _ArrayDisplay($skripte)
    EndIf
    Next

    [/autoit]


    Das ist das Skript. Es läuft, abgesehen von den ListView-Items wunderbar. Das ListView-Handle ($handle), der Modname ($mod[0]), die Anzahl der Skripte ($ende) werden korrekt ausgelesen und ausgeben.
    Aber an den Itemtexten scheitert mein Code irgendwie.
    Wenn ich in der MessageBox vor der For-Schleife den Befehl _GUICtrlListView_GetItemText($handle, 0) in _GUICtrlListView_GetItemSelected($handle, 0) ändere, erhalte ich "True" - gut, da das Item ausgewählt ist.
    Es scheint also tatsächlich ein Problem mit dem Item-Text zu sein.

    Hat jemand eine Idee, woran es liegen könnte und wie ich das Problem behebe?

    PS: Falls sich jemand das Programm (tecras ModTranslator), zu welchem die auszulesende Liste gehört, ansehen möchte, kann man es hier herunterladen.

  • Erstellt du die ListView selbst oder willst eine Listview eines Anderen Programmes auslessen?
    Wen du diese Selbst erstellst hilft dir des vll weiter

    Spoiler anzeigen
    [autoit]


    $count = _GUICtrlListView_GetItemCount($hListView)
    Local $iLV[$count][3], $case
    For $i = 0 To $count - 1
    $tmp = _GUICtrlListView_GetItemTextArray($hListView, $i)
    $iLV[$i][0] = $tmp[1]
    $iLV[$i][1] = $tmp[2]
    Next
    _ArrayDisplay($iLV)

    [/autoit]

    Hoffe ich hab dein anliegen auch richtig verstanden ;D

    Ich nehms zurück...wahr totaler schwachsinn sorry

    Habs dochnoch gefunden (Sorry für Durcheinander :S)

    *edit*
    Kleiner tipfehler im Code behoben

    2 Mal editiert, zuletzt von Skilkor (18. März 2011 um 18:25)

  • Es geht um die Liste eines fremden Programmes.
    Ich kann anscheinend alles damit machen - abgesehen von Funktionen, die den Inhalt eines Items liefern sollen, egal ob als String, Array oder sonst was.

  • Deinen Satz verstehe ich jetzt ehrlich gesagt nicht.
    Es ist doch nicht normal, dass ich so ziemlich alles mit der Liste machen kann, was an _GUICtrlListView_-Funktionen vorhanden ist und nur das Auslesen der Itemtexte scheitert.

    Und wie meinst Du das mit den Control....-Funktionen? Falls du ControlGetText oder ControlListView meinst, die funktionieren auch nicht.
    ControlGetText liefert mir einen leeren String und bei ControlListView meldet der JIT-Debugger, dass mein Script in geschützem Speicher lesen wollte. Lasse ich mein Script weiterlaufen, erhalte ich auch hier einen leeren String.