ListVIew Reihe löschen

  • Hallo :D
    hab eine Frage/Problem nähmlich
    hab eine GUI mit einem ListView wo ich Reihen hinzufügen kann die auch in einer Datei Gespeichert werden doch
    meine frage/problem ist ich will ein button mit dem ich eine Reihe auch wieder löschen kann die reihe soll natürlich auch von der Gespeicherten Datei gelöscht werden
    Ich weiß das ich mit

    [autoit]

    _GUICtrlListView_DeleteItemsSelected($iListView)

    [/autoit]


    die ausgewählte reihe löschen kann doch die ausgewählte reihe soll ja von der Datei auch gelöscht werden wie kann ich das machen?

    [autoit]

    Global Const $GUI_EVENT_CLOSE = -3
    #include <GuiListView.au3>
    #include <file.au3>

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

    $Datafile = @ScriptDir & "/Save.sv"
    GUICreate("tabelle", 300, 300)
    $iListView = GUICtrlCreateListView("1|2|3|4", 0, 0, 300, 250)
    GUICtrlCreateListViewItem("Leer|Leer|Leer|Leer", $iListView)
    _GUICtrlListView_SetColumnWidth($iListView, 0,80)
    _GUICtrlListView_SetColumnWidth($iListView, 1,60)
    _GUICtrlListView_SetColumnWidth($iListView, 2,85)
    _GUICtrlListView_SetColumnWidth($iListView, 3,70)
    $iButtonSend = GUICtrlCreateButton("Senden", 65, 270, 80, 30)
    $iButtonAdd = GUICtrlCreateButton("Hinzufügen", 155, 270, 80, 30)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $iButtonAdd
    $New_1 = InputBox("Neue Reihe","Spalte 1:","")
    $New_2 = InputBox("Neue Reihe","Spalte 2:","")
    $New_3 = InputBox("Neue Reihe","Spalte 3:","")
    $New_4 = InputBox("Neue Reihe","Spalte 4:","")
    FileOpen($Datafile)
    Local $SPLIT = "|SPLIT|"
    FileWrite($Datafile,$New_1 & $SPLIT & $New_2& $SPLIT & $New_3 & $SPLIT & $New_4 & @CRLF)
    TrayTip("OK","Erfolgreich Hinzugefügt",2)
    Case $msg = $iButtonSend
    $Gesammt = _FileCountLines($Datafile)
    _GUICtrlListView_DeleteAllItems($iListView)
    For $Line = 1 to $Gesammt step +1
    $Read = FileReadLine($Datafile,$Line)
    $Splitter = StringSplit($Read, "|SPLIT|", 1)
    $Spalte1 = $Splitter[1]
    $Spalte2 = $Splitter[2]
    $Spalte3 = $Splitter[3]
    $Spalte4 = $Splitter[4]
    GUICtrlCreateListViewItem($Spalte1 & "|" & $Spalte2& "|" & $Spalte3 & "|" & $Spalte4,$iListView)
    Next
    TrayTip("Fertig","Daten alle eingelesen !!!",2)
    EndSelect
    WEnd

    [/autoit]


    Freue mich auf jede antwort und jede HIlfe.

    Einmal editiert, zuletzt von blackcho (11. Mai 2014 um 02:20)

    • Offizieller Beitrag

    Also erstmal: FileOpen gibt ein Handle zurück und dieses benutzt man dann bei FileWrite bzw. FileRead (siehe auch das Beispiel in der Hilfe).
    Jede Datei, die Du mit FileOpen öffnest musst Du unbedingt mit FileClose wieder schließen, sonst liegt ein Lock auf der Datei.

    Nun zu Deinem Problem: Wenn Du die Zeilen gelöscht hast, schreibst Du einfach den gesamten Datenbestand aus dem Listview in die Datei. So sind alle Änderungen abgespeichert.
    Eventuell vorher noch ein Backup von der Datei erstellen, dann kann man auch zu einem alten Bestand zurückkehren.