Datei erschaffen und Inhalt anzeigen lassen

  • Hallo nochmal,

    also folgendes. Ich hab vor,d asss der BEnutzer einen Text eingibt und der in eine TXT-Datei geschrieben wird. Anschliessend soll die Textdatei mti Notepad geöffnet werden. Ich benutze dafür folgenden Code.

    [autoit]


    #include <process.au3>
    MsgBox(0, "Arbeitsverzeichnis", "Dies ist ihr aktuelles Arbeitsverzeichnis:" & @WorkingDir)
    $text = InputBox("Datumsabfrage", "Bitte irgendwas eingeben.")
    $file = FileOpen("FileTest.txt", 1)

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

    If $file = -1 Then
    MsgBox(0, "Fehler", "Datei kann nicht geöffnet werden. Na dann sieh mal zu.", 10)
    Exit
    EndIf

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

    FileWrite("FileTest.txt", 1)
    For $i = 1 to 10 step 1
    FileWrite($file, $text & @CRLF)

    Next
    FileClose( @workingDir & "FileTest.txt")
    Sleep(3000)
    _RunDOS("start notepad.exe " & @WorkingDir & "\FileTest.txt")
    Sleep(1000)
    WinWaitActive("FileTest.txt")
    Sleep(1000)
    WinKill("FileTest.txt - Editor")

    [/autoit]

    Wenn er jetzt automatisch Notepad öffnet, steht da nichts ausser einer 1, die ich auch noch gern weghaben würde. Wenn ich die Datei per Hand öffne, steht alles drin, was drin stehen soll.

    Im nachfolgenden würde ich es gerne haben, dass er einen zweiten Dialog öffnet und die erste Datei mit dem neuen Input überschreibt. Dafür hab ich folgenden Code versucht.

    [autoit]


    $otext = InputBox("Überschreiben vorbereiten", "Geben sie bitte die neuen Daten ein")
    $ofile = FileOpen("FileTest.txt", 2)

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

    If $ofile = -1 Then
    MsgBox(0, "Error", "This Baby Got A Temper!!!")
    Sleep(250)
    Exit
    EndIf

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

    FileWrite("FileTest.txt", 1)
    For $o = 1 to 10 step 1
    FileWrite($ofile, $otext & @CRLF)
    Sleep(100)
    Next
    Sleep(1000)
    _RunDOS("start notepad.exe " & @WorkingDir & "\FileTest.txt")
    Sleep(1000)
    WinWaitActive("FileTest.txt - Editor")
    Sleep(1000)
    WinKill("FileTest.txt - Editor")
    MsgBox(0, "End", "That's All Folks")

    [/autoit]

    Aber irgendwie arbeitet das gar nicht.

    Und eine Frage noch. Wie funktioniert das hier mit den Spoiler-Tags? Wollte meine Codes mit [Spoiler] umschliessen, damit sie nicht zu lang werden, aber irgendwie ignoriert er das bei mir in der Vorschau.

    • Offizieller Beitrag

    Da schau dir mal ShellExecute() an. Das dürfte dein Problem lösen.

    Ich habe den zweiten Code mal etwas korrigiert. Aber ungetestet. Wie gesagt: Schmeiß RunDOS raus.

    Spoiler anzeigen
    [autoit]

    $otext = InputBox("Überschreiben vorbereiten", "Geben sie bitte die neuen Daten ein")
    $ofile = FileOpen("FileTest.txt", 2)

    If $ofile = -1 Then
    MsgBox(0, "Error", "This Baby Got A Temper!!!")
    Sleep(250)
    Exit
    EndIf

    ;~ FileWrite("FileTest.txt", 1) Bereits zum Überschreiben geöffnet in Zeile 2
    For $o = 1 to 10 step 1
    FileWrite($ofile, $otext & @CRLF)
    Sleep(100)
    Next

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

    ; FileHandle schließen!!
    FileClose($ofile)

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

    Sleep(1000)
    _RunDOS("start notepad.exe " & @WorkingDir & "\FileTest.txt")
    Sleep(1000)
    WinWaitActive("FileTest.txt - Editor")
    Sleep(1000)
    WinKill("FileTest.txt - Editor")
    MsgBox(0, "End", "That's All Folks")

    [/autoit]


    Achja:

    [ SPOILER ][ AUTOIT ]
    Code
    [ /AUTOIT ][ /SPOILER ]

    ohne Leerzeichen in den Tags.