Checkbox abfragen

  • so ich würde gern den status der checkbox in der listview abfragen aber ich hab leider nix gefunden in der hilfe bzw. _GUICtrlListView_GetSelectedIndices erfüllt nicht den erwarteten erfolg da kommt bei mir imemr 80 als wert


    Spoiler anzeigen
    [autoit]


    #include <ListBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GuiListBox.au3>
    #include <ButtonConstants.au3>
    #include <StaticConstants.au3>

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

    $check = 0
    ;$array_lines = _Dateilesen(@ScriptDir & "\Hallo.txt")
    Opt("GuiOnEventMode", 1)

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

    GUICreate("Suche ersetzen", 600, 600)
    $bild = GUICtrlCreatePic(@ScriptDir & "\raiba1.jpg", 440, 510, 150, 60, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $ID_Menu = GUICtrlCreateMenu("Datei")
    $ID_Beenden = GUICtrlCreateMenuItem("Beenden", $ID_Menu)

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

    GUISetState()

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

    ;-----------Button----------------------------------

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

    $ID_ersetzen = GUICtrlCreateButton("Ersetzen", 520, 30, 50, 30)
    $ID_Ok = GUICtrlCreateButton("Ok", 200, 30, 30, 30)
    $clear = GUICtrlCreateButton("Clear", 230, 30, 40, 30, $BS_BITMAP)
    ;GUICtrlSetImage($clear, @ScriptDir & "raiba1.jpg", -1)

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

    ;---------------------------------------------------

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

    ;-----------Input-----------------------------------
    $ID_fileend = GUICtrlCreateInput("", 100, 35, 100, 20)
    $ID_ersetz_wort = GUICtrlCreateInput("", 420,55,100,20)
    $ID_such_wort = GUICtrlCreateInput("", 420, 35, 100, 20)
    GUICtrlCreateLabel(" Suchdatei", 30, 35, 60, 20, $SS_SUNKEN)
    GUICtrlCreateLabel(" Suchtext", 350, 35, 60, 20, $SS_SUNKEN)
    GUICtrlCreateLabel(" zu ersetzender Text", 300, 55, 110, 20, $SS_SUNKEN)

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

    ;-----------List------------------------------------
    $listview = GUICtrlCreateListView("Dateipfad| Datei", 30, 110, 300, 310, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES))
    $list_box = GUICtrlCreateList("", 380, 110, 180, 310)
    GUICtrlCreateLabel("Ersetzte Dateien", 430,85)
    GUICtrlCreateLabel("Gefundene Dateien", 140, 85)
    ;---------------------------------------------------

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

    ;GUICtrlSetOnEvent($ID_Path,
    ;GUICtrlSetOnEvent($checkbox_button, "_Display")
    GUICtrlSetOnEvent($ID_Ok, "_Dateityp")
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GuiSetOnEvent($GUI_EVENT_MINIMIZE, "minimize")
    GUICtrlSetOnEvent($clear, "_clear")
    GUICtrlSetOnEvent($ID_Beenden, "close")
    GUICtrlSetOnEvent($ID_ersetzen, "_ersetzen")

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

    While 1
    Sleep(20)
    WEnd

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

    Func _ersetzen()

    $count = _GUICtrlListView_GetItemCount($listview)
    If GUICtrlRead($ID_ersetz_wort) = "" Or GUICtrlRead($ID_such_wort) = "" Then
    MsgBox(0,"", "Bitte Suchwort und Suchdatei eingeben")


    ElseIf _GUICtrlListView_GetItemCount($listview) = "0" Then
    MsgBox(0,"", "Bitte zuerst nach dateien suchen")

    Else


    Dim $datei[_GUICtrlListView_GetItemCount($listview)]

    For $z = 0 to _GUICtrlListView_GetItemCount($listview) -1
    If BitAND(Guictrlread($listview[$z]), $GUI_CHECKED) = $GUI_CHECKED Then
    $string = _GUICtrlListView_GetItemTextString($listview, $z)
    $datei[$z]= Stringleft($string, Stringlen($string)-1)
    MsgBox(0,"", $datei[$z])
    EndIf
    Next


    $suchwort = GUICtrlRead($ID_such_wort)
    $arraylength = UBound($datei) -1
    $text_right = GUICtrlRead($ID_ersetz_wort)

    For $j = 0 to $arraylength step +1

    $sTest = _SearchTextInFile($datei[$j] ,$suchwort)

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

    Global $line_search = _SearchLineInFile($datei[$j],$suchwort)
    $sResult = ""

    ;If $line_search[0] = 0 Then msgBox(0,"", $line_search[0])

    For $i = 0 To UBound($sTest) -1 Step +1
    $sResult &= $sTest[$i] & @CRLF

    Next

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

    If $line_search[0] = 0 Then
    ;MsgBox(3, "", "Dateiort: " & $dateien[$j][0] & " " & "Hinzugefügt in die letzte zeile" )
    _FileWriteToLine($datei[$j], _FileCountLines($datei[$j])+1, $text_right, 0)
    GUICtrlSetData($list_box, $datei[$j])

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

    For $o = 0 to Ubound($line_search) -1 step +1
    If $sTest[$o] <> $suchwort Then
    $o = $o
    Else
    ;MsgBox(3, "", "Dateiort: " & $dateien[$j][0] & " " & "Gefunden in Zeile: " & $line_search[$o])
    _FileWriteToLine($datei[$j], $line_search[$o], $text_right, 1)
    GUICtrlSetData($list_box, $datei[$j])
    EndIf

    Next
    EndIf

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

    Next
    EndIf
    EndFunc

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

    Func _clear()
    If $check = 0 Then
    msgBox(0,"", "Sie haben noch keine Suche gestartet")
    Else
    GUICtrlSetData($ID_ersetz_wort, "")
    GUICtrlSetData($ID_such_wort, "")
    GUICtrlSetData($ID_fileend, "")
    _GUICtrlListView_DeleteAllItems($listview)


    $lines = 0
    $icheck = 0
    $array = 0
    $check = 0
    EndIf

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

    EndFunc

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

    Func _Dateityp()


    If GUICtrlRead($ID_fileend) = "" Then
    MsgBox(0, "", "Bitte ein Suchwort eingeben")
    EndIf
    _GUICtrlListView_DeleteAllItems($listview)
    $suchwort = GUICtrlRead($ID_such_wort)
    Global $check = 1
    $fileend = GUICtrlRead($ID_fileend) & "|"
    $Ort = @ScriptDir
    $datei = _ordner_rekursiv($Ort, 1, True, False, $fileend)


    For $i = 1 To UBound($datei) - 1
    $listitem = GUICtrlCreateListViewItem($datei[$i][0] & $datei[$i][1], $listview)
    _GUICtrlListView_SetItemChecked($listview, $i)
    GUICtrlSetState(-1, $GUI_UNCHECKED)
    $msg = GUICtrlGetState(-1)
    MsgBox(0,"", $msg)

    Next

    EndFunc

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

    Func _SearchLineInFile($sPath,$sSearch)
    If Not FileExists($sPath) Then Return 0
    $iNumber = _FileCountLines($sPath)
    Local $aRet[1] = ["0"]
    Local $iCheck = 0
    Local $line1[1] = ["0"]
    For $i = 1 To $iNumber Step +1
    If StringInStr(FileReadLine($sPath,$i),$sSearch) Then
    If $iCheck = 0 Then
    $aRet[0] = FileReadLine($sPath,$i)
    $line1[0] = $i
    $iCheck = 1
    Else
    _ArrayAdd($aRet,FileReadLine($sPath,$i))
    _ArrayAdd($line1, $i)

    EndIf
    EndIf
    Next
    Return $line1
    EndFunc

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

    Func _SearchTextInFile($sPath,$sSearch)
    If Not FileExists($sPath) Then Return 0
    $iNumber = _FileCountLines($sPath)
    Local $aRet[1] = ["0"]
    Local $iCheck = 0
    Local $line1[1] = ["0"]
    For $i = 1 To $iNumber Step +1
    If StringInStr(FileReadLine($sPath,$i),$sSearch) Then
    If $iCheck = 0 Then
    $aRet[0] = FileReadLine($sPath,$i)
    $line1[0] = $i
    $iCheck = 1
    Else
    _ArrayAdd($aRet,FileReadLine($sPath,$i))
    _ArrayAdd($line1, $i)

    EndIf
    EndIf
    Next
    Return $aRet
    EndFunc

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

    Func close()
    Exit
    EndFunc

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

    Func _ordner_rekursiv($udf_quellordner, $udf_Ordner_Dateien = 1, $udf_unterordner = True, $udf_spalte_datum = False, $udf_dateityp = "", $udf_auslassen = "")
    Local $verzeichnisse_alle[1] ;Array für die Ordner
    Local $array_alles[1000000][3] ;Array für die Ordner und Dateien
    Local $szDrive, $szDir, $szFName, $szExt

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

    If Not IsArray($udf_quellordner) Then
    $udf_quellordner_tmp = $udf_quellordner
    Dim $udf_quellordner[2]
    $udf_quellordner[1] = $udf_quellordner_tmp
    EndIf

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

    For $i = 1 To UBound($udf_quellordner) - 1
    If Not FileExists($udf_quellordner[$i]) Or Not StringInStr($udf_quellordner[$i], ":") Then
    SetError(1)
    Return 0
    EndIf

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

    If StringRight($udf_quellordner[$i], 1) <> "\" Then $udf_quellordner[$i] &= "\"

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

    $udf_quellordner_einzeln = $udf_quellordner[$i]

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

    If $udf_unterordner = True Then ;mit Unterordner
    _ordner_rekursiv_mit_unterordner($udf_quellordner_einzeln, $verzeichnisse_alle)
    _ArrayAdd($verzeichnisse_alle, $udf_quellordner_einzeln)
    Else ;ohne Unterordner
    $verzeichnisse_alle = $udf_quellordner
    EndIf
    Next

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

    If IsArray($verzeichnisse_alle) Then $verzeichnisse_alle[0] = UBound($verzeichnisse_alle) - 1 ;In die erste Zeile die Anzahl der Dateien schreiben

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

    If $udf_Ordner_Dateien = 1 Then ;Dateien auflisten
    $zaehler_fortlaufend = 0

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

    If Not IsArray($verzeichnisse_alle) Then
    $verzeichnisse_alle_tmp = $verzeichnisse_alle
    Dim $verzeichnisse_alle[2]
    $verzeichnisse_alle[1] = $verzeichnisse_alle_tmp
    EndIf

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

    For $u = 1 To UBound($verzeichnisse_alle) - 1
    $array_alle_dateien = _FileListToArray($verzeichnisse_alle[$u], "*", 1)

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

    For $k = 1 To UBound($array_alle_dateien) - 1
    $kriterien_ok = 0

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

    If $udf_dateityp = "*" Then ;Dateityp nicht angegeben oder alle Dateien

    $kriterien_ok = 1

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

    ElseIf StringInStr($udf_dateityp, "|") Then ;Dateitypen angegeben
    $dateityp_split = StringSplit($udf_dateityp, "|")
    $udf_dateiendung_array = _PathSplit($array_alle_dateien[$k], $szDrive, $szDir, $szFName, $szExt)
    $udf_dateiendung = $udf_dateiendung_array[4]
    $udf_dateiname = $udf_dateiendung_array[3]
    For $i = 1 To UBound($dateityp_split) - 1
    If $dateityp_split[$i] = $udf_dateiname & $udf_dateiendung Or $dateityp_split[$i] = $udf_dateiendung Then
    ;MsgBox(0,"", $udf_dateiname & $udf_dateiendung)
    $kriterien_ok = 1
    ExitLoop
    EndIf
    Next
    EndIf

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

    If $udf_auslassen <> "" Then ;Wörter in dem Pfad und Datei auslassen
    $auslassen_split = StringSplit($udf_auslassen, "|")
    For $i = 1 To UBound($auslassen_split) - 1
    If StringInStr($array_alle_dateien[$k], $auslassen_split[$i]) Or StringInStr($verzeichnisse_alle[$u], $auslassen_split[$i]) Then
    $kriterien_ok = 0
    ExitLoop
    EndIf
    Next
    EndIf

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

    ;Papierkorb und System Volume Information wird nicht mitkopiert
    If StringInStr($array_alle_dateien[$k], 'RECYCLER') Or StringInStr($verzeichnisse_alle[$u], 'RECYCLER') _
    Or StringInStr($array_alle_dateien[$k], 'RECYCLED') Or StringInStr($verzeichnisse_alle[$u], 'RECYCLED') _
    Or StringInStr($array_alle_dateien[$k], 'System Volume Information') Or StringInStr($verzeichnisse_alle[$u], 'System Volume Information') _
    Or StringInStr($array_alle_dateien[$k], '$RECYCLE.BIN') Or StringInStr($verzeichnisse_alle[$u], '$RECYCLE.BIN') Then
    $kriterien_ok = 0
    ExitLoop
    EndIf

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

    ;wenn der Dateityp passt und die Datei bzw. der Ordner nicht ausgelassen werden soll
    If $kriterien_ok = 1 Then
    $zaehler_fortlaufend += 1
    $array_alles[$zaehler_fortlaufend][0] = $verzeichnisse_alle[$u]
    $array_alles[$zaehler_fortlaufend][1] = $array_alle_dateien[$k]

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

    If $udf_spalte_datum = True Then
    $time2 = FileGetTime($verzeichnisse_alle[$u] & "\" & $array_alle_dateien[$k], 0) ;"Datum geändert" auslesen
    $array_alles[$zaehler_fortlaufend][2] = $time2[0] & $time2[1] & $time2[2] & $time2[3] & $time2[4] & $time2[5]
    EndIf

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

    EndIf

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

    Next
    Next

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

    Else ;Ordner auflisten
    For $i = 1 To UBound($verzeichnisse_alle) - 1
    $array_alles[$i][0] = $verzeichnisse_alle[$i]
    $zaehler_fortlaufend = UBound($verzeichnisse_alle) - 1
    Next
    EndIf

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

    ;Leere Zeilen am Ende löschen
    ReDim $array_alles[$zaehler_fortlaufend + 1][3]

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

    ;In die erste Zeile die Anzahl der Dateien schreiben
    If IsArray($array_alles) Then $array_alles[0][0] = UBound($array_alles) - 1

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

    $verzeichnisse_alle = 0

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

    Return $array_alles
    EndFunc ;==>_ordner_rekursiv

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

    ;**************************************
    ; Unterordner durchsuchen *
    ;**************************************

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

    Func _ordner_rekursiv_mit_unterordner($udf_quellordner, ByRef $verzeichnisse_alle)
    $verzeichnisse = _FileListToArray($udf_quellordner, "*", 2)

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

    For $i = 1 To UBound($verzeichnisse) - 1
    $verzeichnisse[$i] = $udf_quellordner & $verzeichnisse[$i] & "\"
    _ArrayAdd($verzeichnisse_alle, $verzeichnisse[$i])
    _ordner_rekursiv_mit_unterordner($verzeichnisse[$i], $verzeichnisse_alle)
    Next
    EndFunc ;==>_ordner_rekursiv_mit_unterordner

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

    Einmal editiert, zuletzt von Neuton23 (20. August 2010 um 15:03)