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
#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>
$check = 0
;$array_lines = _Dateilesen(@ScriptDir & "\Hallo.txt")
Opt("GuiOnEventMode", 1)
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)
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];-----------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)
;-----------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)
;---------------------------------------------------
;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")
While 1
Sleep(20)
WEnd
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)
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
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])
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
Next
EndIf
EndFunc
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
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
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
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
Func close()
Exit
EndFunc
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
If Not IsArray($udf_quellordner) Then
$udf_quellordner_tmp = $udf_quellordner
Dim $udf_quellordner[2]
$udf_quellordner[1] = $udf_quellordner_tmp
EndIf
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
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
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
If Not IsArray($verzeichnisse_alle) Then
$verzeichnisse_alle_tmp = $verzeichnisse_alle
Dim $verzeichnisse_alle[2]
$verzeichnisse_alle[1] = $verzeichnisse_alle_tmp
EndIf
For $u = 1 To UBound($verzeichnisse_alle) - 1
$array_alle_dateien = _FileListToArray($verzeichnisse_alle[$u], "*", 1)
For $k = 1 To UBound($array_alle_dateien) - 1
$kriterien_ok = 0
If $udf_dateityp = "*" Then ;Dateityp nicht angegeben oder alle Dateien
$kriterien_ok = 1
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
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
;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
;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]
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
EndIf
[/autoit] [autoit][/autoit] [autoit]Next
Next
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
;Leere Zeilen am Ende löschen
ReDim $array_alles[$zaehler_fortlaufend + 1][3]
;In die erste Zeile die Anzahl der Dateien schreiben
If IsArray($array_alles) Then $array_alles[0][0] = UBound($array_alles) - 1
$verzeichnisse_alle = 0
[/autoit] [autoit][/autoit] [autoit]Return $array_alles
EndFunc ;==>_ordner_rekursiv
;**************************************
; Unterordner durchsuchen *
;**************************************
Func _ordner_rekursiv_mit_unterordner($udf_quellordner, ByRef $verzeichnisse_alle)
$verzeichnisse = _FileListToArray($udf_quellordner, "*", 2)
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