Datei löschen funktioniert nicht

  • Hallo.

    Hier erst einmal das Script um das es geht.

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>

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

    $Form1 = GUICreate("Zahlenblock", 131, 171, 442, 396)
    $Button1 = GUICtrlCreateButton("1", 8, 8, 33, 33, 0)
    $Button2 = GUICtrlCreateButton("2", 48, 8, 33, 33, 0)
    $Button3 = GUICtrlCreateButton("3", 88, 8, 33, 33, 0)
    $Button4 = GUICtrlCreateButton("4", 8, 48, 33, 33, 0)
    $Button5 = GUICtrlCreateButton("5", 48, 48, 33, 33, 0)
    $Button6 = GUICtrlCreateButton("6", 88, 48, 33, 33, 0)
    $Button7 = GUICtrlCreateButton("7", 8, 88, 33, 33, 0)
    $Button8 = GUICtrlCreateButton("8", 48, 88, 33, 33, 0)
    $Button9 = GUICtrlCreateButton("9", 88, 88, 33, 33, 0)
    $Button10 = GUICtrlCreateButton("0", 48, 128, 33, 33, 0)
    $Button11 = GUICtrlCreateButton("C", 8, 128, 33, 33, 0)
    $Button12 = GUICtrlCreateButton("OK", 88, 128, 33, 33, 0)
    GUISetState(@SW_SHOW)

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

    _dateiloeschen()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _dateiloeschen()
    Exit
    Case $Button1 ; 1
    FileOpen("test.txt", 1)
    FileWrite("test.txt", "1")
    FileClose("test.txt")
    MsgBox(0, "Test", FileRead("test.txt"))
    Case $Button2 ; 2
    FileOpen("test.txt", 1)
    FileWrite("test.txt", "2")
    FileClose("test.txt")
    MsgBox(0, "Test", FileRead("test.txt"))
    Case $Button3 ; 3
    FileOpen("test.txt", 1)
    FileWrite("test.txt", "3")
    FileClose("test.txt")
    MsgBox(0, "Test", FileRead("test.txt"))
    #cs
    Case $Button4 ; 4
    Case $Button5 ; 5
    Case $Button6 ; 6
    Case $Button7 ; 7
    Case $Button8 ; 8
    Case $Button9 ; 9
    Case $Button10 ; 0
    #ce
    Case $Button11 ; C
    _dateileeren()

    Case $Button12 ; OK
    EndSwitch
    WEnd

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

    ; löscht die Textdatei
    Func _dateiloeschen()
    if FileExists("test.txt") then
    FileDelete("test.txt")
    EndIf
    EndFunc

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

    Func _dateileeren()
    FileOpen("test.txt", 2)
    FileWrite("test.txt", "")
    FileClose("test.txt")
    EndFunc

    [/autoit]

    Die Funktion _dateiloeschen() arbeitet nicht so wie sie soll. Sie soll die Datei test.txt unwiederruflich löschen. Aber das Scripüt macht gar nichts.
    Laut aktueller Hilfe ist es richtig und die SuFu habe ich genutzt, um evtl. selber das Problem zu lösen, jedoch erfolglos. :(


    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hi Alina!
    Hat mich am Anfang auch gewundert :). Das Problem liegt aber darin, das du FileOpen und FileClose falsch verwendest.
    Warscheinlich hat Autoit noch die Datei geöffnet und somit kannst du sie nicht löschen.
    Das muss ungefähr so aussehen:

    [autoit]

    $File = FileOpen("test.txt", 1)
    FileWrite($File, "1")
    FileClose($File)

    [/autoit]

    Die Buttons lassen sich auch so zusammenfassen:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>

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

    Global $Button[13]
    $Form1 = GUICreate("Zahlenblock", 131, 171, 442, 396)
    $Button[1] = GUICtrlCreateButton("1", 8, 8, 33, 33, 0)
    $Button[2] = GUICtrlCreateButton("2", 48, 8, 33, 33, 0)
    $Button[3] = GUICtrlCreateButton("3", 88, 8, 33, 33, 0)
    $Button[4] = GUICtrlCreateButton("4", 8, 48, 33, 33, 0)
    $Button[5] = GUICtrlCreateButton("5", 48, 48, 33, 33, 0)
    $Button[6] = GUICtrlCreateButton("6", 88, 48, 33, 33, 0)
    $Button[7] = GUICtrlCreateButton("7", 8, 88, 33, 33, 0)
    $Button[8] = GUICtrlCreateButton("8", 48, 88, 33, 33, 0)
    $Button[9] = GUICtrlCreateButton("9", 88, 88, 33, 33, 0)
    $Button[10] = GUICtrlCreateButton("0", 48, 128, 33, 33, 0)
    $Button[11] = GUICtrlCreateButton("C", 8, 128, 33, 33, 0)
    $Button[12] = GUICtrlCreateButton("OK", 88, 128, 33, 33, 0)
    GUISetState(@SW_SHOW)
    _dateiloeschen()
    While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
    _dateiloeschen()
    Exit
    EndIf
    For $i = 1 To 10
    If $nMsg = $Button[$i] Then
    $File = FileOpen("test.txt", 1)
    FileWrite($File, Mod($i, 10))
    FileClose($File)
    MsgBox(0, "Test", FileRead("test.txt"))
    EndIf
    Next
    If $nMsg = $Button[11] Then _dateileeren()
    ;~ If $nMsg = $Button[12] Then
    WEnd

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

    ; löscht die Textdatei
    Func _dateiloeschen()
    If FileExists("test.txt") Then FileDelete("test.txt")
    EndFunc ;==>_dateiloeschen

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

    Func _dateileeren()
    $File = FileOpen("test.txt", 2)
    FileWrite($File, "")
    FileClose($File)
    EndFunc ;==>_dateileeren

    [/autoit]
    • Offizieller Beitrag

    Richtig - FileOpen war das Problem.
    Hier mal als komprimierte Variante:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Zahlenblock", 131, 171, 442, 396)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
    $Button1 = GUICtrlCreateButton("1", 8, 8, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button2 = GUICtrlCreateButton("2", 48, 8, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button3 = GUICtrlCreateButton("3", 88, 8, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button4 = GUICtrlCreateButton("4", 8, 48, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button5 = GUICtrlCreateButton("5", 48, 48, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button6 = GUICtrlCreateButton("6", 88, 48, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button7 = GUICtrlCreateButton("7", 8, 88, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button8 = GUICtrlCreateButton("8", 48, 88, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button9 = GUICtrlCreateButton("9", 88, 88, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button10 = GUICtrlCreateButton("0", 48, 128, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button11 = GUICtrlCreateButton("C", 8, 128, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_dateileeren')
    $Button12 = GUICtrlCreateButton("OK", 88, 128, 33, 33, 0)
    GUISetState(@SW_SHOW)

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

    ;~ _dateiloeschen()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    _dateiloeschen()
    Exit
    EndFunc

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

    Func _buttonClick()
    Local $button = @GUI_CtrlId
    Local $fh = FileOpen("test.txt", 1)
    FileWrite($fh, ControlGetText($Form1, '', $button))
    FileClose($fh)
    MsgBox(0, "Test", FileRead("test.txt"))
    EndFunc

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

    ; löscht die Textdatei
    Func _dateiloeschen()
    If FileExists("test.txt") Then
    If FileDelete("test.txt") Then MsgBox(0, 'Löschen', 'Datei gelöscht!')
    EndIf
    EndFunc

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

    Func _dateileeren()
    Local $fh = FileOpen("test.txt", 2)
    FileWrite($fh, "")
    FileClose($fh)
    EndFunc

    [/autoit]
  • Okay und vielen lieben DANK !!!!
    Werde mich nun hinsetzen und schauen, warum es mit Euren beiden Codes geht, aber bei meinem ein großer Fehler war und besonders wo und wie ich ihn nächstes mal umgehen kann.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • blubbstar
    ich würde es so machen:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>

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

    Global $Button[12]
    $Form1 = GUICreate("Zahlenblock", 131, 171, 442, 396)
    $Button[1] = GUICtrlCreateButton("1", 8, 8, 33, 33, 0)
    $Button[2] = GUICtrlCreateButton("2", 48, 8, 33, 33, 0)
    $Button[3] = GUICtrlCreateButton("3", 88, 8, 33, 33, 0)
    $Button[4] = GUICtrlCreateButton("4", 8, 48, 33, 33, 0)
    $Button[5] = GUICtrlCreateButton("5", 48, 48, 33, 33, 0)
    $Button[6] = GUICtrlCreateButton("6", 88, 48, 33, 33, 0)
    $Button[7] = GUICtrlCreateButton("7", 8, 88, 33, 33, 0)
    $Button[8] = GUICtrlCreateButton("8", 48, 88, 33, 33, 0)
    $Button[9] = GUICtrlCreateButton("9", 88, 88, 33, 33, 0)
    $Button[0] = GUICtrlCreateButton("0", 48, 128, 33, 33, 0)
    $Button[10] = GUICtrlCreateButton("C", 8, 128, 33, 33, 0)
    $Button[11] = GUICtrlCreateButton("OK", 88, 128, 33, 33, 0)
    GUISetState(@SW_SHOW)
    _dateiloeschen()
    While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
    _dateiloeschen()
    Exit
    EndIf
    For $i = 0 To 9
    If $nMsg = $Button[$i] Then
    $File = FileOpen("test.txt", 1)
    FileWrite($File, $i)
    FileClose($File)
    MsgBox(0, "Test", FileRead("test.txt"))
    EndIf
    Next
    If $nMsg = $Button[10] Then _dateileeren()
    ;~ If $nMsg = $Button[11] Then
    WEnd

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

    ; löscht die Textdatei
    Func _dateiloeschen()
    If FileExists("test.txt") Then FileDelete("test.txt")
    EndFunc ;==>_dateiloeschen

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

    Func _dateileeren()
    $File = FileOpen("test.txt", 2)
    FileWrite($File, "")
    FileClose($File)
    EndFunc ;==>_dateileeren

    [/autoit]

    Dann fällt Mod($i,10) weg.