Zeilen im Script löschen

  • Hallo Leute,
    ich brauch Hilfe beim folgenden Script:

    [autoit]


    ;Code by Mirko96
    GUICreate("Test", 300, 100)
    GUISetState()
    $i1 = GUICtrlCreateInput("", 50, 25)
    $b1 = GUICtrlCreateButton("save", 120, 50)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit

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

    Case $b1
    $read = GUICtrlRead($i1)
    $wl = FileWriteLine("try1.au3", "#cs")
    $wl1 = FileWriteLine("try1.au3", $read)
    $wl2 = FileWriteLine("try1.au3", "#ce")
    GUICtrlDelete($i1)
    GUICtrlDelete($read)
    #cs
    können nicht mit diesem Befehl gelöscht werden, da es sich nicht um control's handelt
    guictrldelete($wl)
    guictrldelete(wl1)
    guictrldelete($wl2)
    #ce
    $frl1 = FileReadLine("try1.au3", 31)
    MsgBox(0, "", $frl1)
    EndSwitch
    WEnd

    [/autoit]


    Die Probleme sind folgende:
    1.Wenn der Button zum 2 Mal ausgefürt wird sollten sowohl der Input als auch die Variablen (von #cs bis #ce) sind gelöscht sein(durch einen anderen Befehl in diesem Fall [guictrldelete]), damit wäre direkt Prob. 2 mit gelöst.Es sollten aber leere Zeilen (wo der gelöschte Kram war )entstehen, damit das auslesen immernoch funktionieren würde( wobei man die Zeilen miteinberechnen und das fileread direkt auf die Zeile beziehen kann, die das anzuzeigene enthält.

    2.
    Da der Input nicht verschwindet, kann man immerneue Dinge eingeben, die Folge: Das Script bekommt immermehr Zeilen u. verbraucht auch mehr Speicherplatz.
    Das sähe dann so aus:

    [autoit]


    ;Code by Mirko96
    GUICreate("Test", 300, 100)
    GUISetState()
    $i1 = GUICtrlCreateInput("", 50, 25)
    $b1 = GUICtrlCreateButton("save", 120, 50)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit

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

    Case $b1
    $read = GUICtrlRead($i1)
    $wl = FileWriteLine("try1.au3", "#cs")
    $wl1 = FileWriteLine("try1.au3", $read)
    $wl2 = FileWriteLine("try1.au3", "#ce")
    GUICtrlDelete($i1)
    GUICtrlDelete($read)
    #cs
    können nicht mit diesem Befehl gelöscht werden, da es sich nicht um control's handelt
    guictrldelete($wl)
    guictrldelete(wl1)
    guictrldelete($wl2)
    #ce
    $frl1 = FileReadLine("try1.au3", 31)
    MsgBox(0, "", $frl1)
    EndSwitch
    WEnd
    #cs
    Hallo Welt
    #ce
    #cs
    0
    #ce

    [/autoit]


    Bezüglich des Buttons und seiner späteren Funktion hab ich mir schon was einfallen lassen u. zum Design auch, aber um das Script vorerst nicht zu voll zu stopfen,füge ich den Kram später ein,also dazu bitte keine überflüssigen Kommentare.

    Ich bedanke mich schonmal im vorraus für eure Hilfe. :)

    mfg
    Mirko96

    Einmal editiert, zuletzt von Mirko96 (23. Mai 2012 um 21:05)

  • Also eine Funk für "FileDeleteLine()":

    [autoit]


    Func _Delete_Line_In_File($fileName, $lineNum)

    Local $len = FileGetSize($fileName)
    Local $txt = FileRead($fileName, $len)
    If @error = 1 Then Return 0
    Local $pos1 = StringInStr($txt, @lf, 0, $lineNum - 1)
    Local $pos2 = StringInStr($txt, @lf, 0, $lineNum)
    If $pos1 > 0 Or $pos2 > 0 Then
    If $pos2 = 0 Then $pos2 = $len
    FileDelete($fileName)
    FileWrite($fileName, StringMid($txt, 1, $pos1) & StringMid($txt, $pos2 + 1))
    Return 1
    EndIf
    Return 0

    EndFunc ;==> _Delete_Line_In_File()

    [/autoit]


    © NeuroToxic - AutoItScript.com
    Source: http://www.autoitscript.com/forum/topic/60…post__p__457224

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Danke, das hat mir beides sehr geholfen, nun kann ich mein Script endlich vervollständigen. :)
    mfg
    Mirko96