FileOpen / FileClose / FileDelete funktioniert nicht

  • Hallo ihr Alle,

    ich habe das Forum breits durchsucht und die Hinweise getestet, trotzdem habe ich folgendes Problem:

    wenn ich in Files schreibe und diese löschen möchte, funktioniert das nur, wenn ich nicht Open/Close verwende, gibts dafür eine Erklärung?

    anbei meine Testscripts

    FUNKTIONIERT:

    Spoiler anzeigen
    [autoit]

    Local $file_r = @ScriptDir & "\zwi.rrr"
    Local $file_m = StringTrimRight($file_r, 3) & "mmm"
    Local $file_zwi = StringTrimRight($file_r, 3) & "zwi"
    Local $file_cha = StringTrimRight($file_r, 3) & "cha"

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

    FileWriteLine($file_r, "Test")
    FileWriteLine($file_m, "Test")
    FileWriteLine($file_zwi, "Test")
    FileWriteLine($file_cha, "Test")

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

    MsgBox(1,"","Pause")

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

    FileDelete($file_r)
    FileDelete($file_m)
    FileDelete($file_zwi)
    FileDelete($file_cha)

    [/autoit]

    FUNKTIONIERT NICHT:

    Spoiler anzeigen
    [autoit]

    Local $file_r = @ScriptDir & "\zwi.rrr"
    Local $file_m = StringTrimRight($file_r, 3) & "mmm"
    Local $file_zwi = StringTrimRight($file_r, 3) & "zwi"
    Local $file_cha = StringTrimRight($file_r, 3) & "cha"

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

    $test1=FileOpen($file_r, 2)
    MsgBox(1,"",$test1)
    $test2=FileOpen($file_m, 2)
    MsgBox(1,"",$test2)
    $test3=FileOpen($file_zwi, 2)
    MsgBox(1,"",$test3)
    $test4=FileOpen($file_cha, 2)
    MsgBox(1,"",$test4)

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

    FileWriteLine($test1, "Test")
    FileWriteLine($test2, "Test")
    FileWriteLine($test3, "Test")
    FileWriteLine($test4, "Test")

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

    MsgBox(1,"","Pause")

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

    $test=FileDelete($test1)
    MsgBox(1,"",$test)
    $test=FileDelete($test2)
    MsgBox(1,"",$test)
    $test=FileDelete($test3)
    MsgBox(1,"",$test)
    $test=FileDelete($test4)
    MsgBox(1,"",$test)

    [/autoit]

    FUNKTIONIERT NICHT:

    Spoiler anzeigen
    [autoit]

    Local $file_r = @ScriptDir & "\zwi.rrr"
    Local $file_m = StringTrimRight($file_r, 3) & "mmm"
    Local $file_zwi = StringTrimRight($file_r, 3) & "zwi"
    Local $file_cha = StringTrimRight($file_r, 3) & "cha"

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

    FileOpen($file_r, 2)
    FileOpen($file_m, 2)
    FileOpen($file_zwi, 2)
    FileOpen($file_cha, 2)

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

    FileWriteLine($file_r, "Test")
    FileWriteLine($file_m, "Test")
    FileWriteLine($file_zwi, "Test")
    FileWriteLine($file_cha, "Test")

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

    MsgBox(1,"","Pause")

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

    FileClose($file_r)
    FileClose($file_m)
    FileClose($file_zwi)
    FileClose($file_cha)

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

    $test=FileDelete($file_r)
    MsgBox(1,"",$test)
    $test=FileDelete($file_m)
    MsgBox(1,"",$test)
    $test=FileDelete($file_zwi)
    MsgBox(1,"",$test)
    $test=FileDelete($file_cha)
    MsgBox(1,"",$test)

    [/autoit]

    Es liegt auch nicht an dem Parameter, mit dem ich die Dateien öffne ... alles getestet!

    Hat jemand eine Erklärung dafür (ich will ja nur korrekt programmieren, pfuschen klappt ja 8) )


    -- Lösung siehe Post 3 --

  • Die Dateien sind in beiden nicht funktionierenden Fällen noch offen.
    Deine zweite Version war schon näher dran. Probier mal

    [autoit]


    $hFile_r = FileOpen($file_r, 2)
    $hFile_m = FileOpen($file_m, 2)
    $hFile_zwi = FileOpen($file_zwi, 2)
    $hFile_cha = FileOpen($file_cha, 2)

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

    FileWriteLine($file_r, "Test")
    FileWriteLine($file_m, "Test")
    FileWriteLine($file_zwi, "Test")
    FileWriteLine($file_cha, "Test")

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

    MsgBox(1,"","Pause")

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

    FileClose($hFile_r)
    FileClose($hFile_m)
    FileClose($hFile_zwi)
    FileClose($hFile_cha)

    [/autoit]
    • Offizieller Beitrag

    SEuBo, fast richtig!

    Nur überschreibst du die Dateinamen und dann funktioniert FileDelete wieder nicht!

    So geht's:

    Spoiler anzeigen
    [autoit]

    Local $file_r = @ScriptDir & "\zwi.rrr"
    Local $file_m = StringTrimRight($file_r, 3) & "mmm"
    Local $file_zwi = StringTrimRight($file_r, 3) & "zwi"
    Local $file_cha = StringTrimRight($file_r, 3) & "cha"

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

    $fh1 = FileOpen($file_r, 2)
    $fh2 = FileOpen($file_m, 2)
    $fh3 = FileOpen($file_zwi, 2)
    $fh4 = FileOpen($file_cha, 2)

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

    FileWriteLine($fh1, "Test")
    FileWriteLine($fh2, "Test")
    FileWriteLine($fh3, "Test")
    FileWriteLine($fh4, "Test")

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

    MsgBox(1,"","Pause")

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

    FileClose($fh1)
    FileClose($fh2)
    FileClose($fh3)
    FileClose($fh4)

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

    $test=FileDelete($file_r)
    MsgBox(1,"",$test)
    $test=FileDelete($file_m)
    MsgBox(1,"",$test)
    $test=FileDelete($file_zwi)
    MsgBox(1,"",$test)
    $test=FileDelete($file_cha)
    MsgBox(1,"",$test)

    [/autoit]
  • Hmmmm ....

    herzlichen Dank für das funktionierende Beispiel, aber irgendwie ist die Handhabung nicht konsequent gelöst, ich kann schreiben via Handle und Name, nur beim Löschen nicht???

    gibts da eine nachvollziehbare Erklärung, liegt das am internen Handling dieser Variablen/Handles ??? ?(