FileOpen Texte in lücken eintragen vorhandener Skript funktioniert auf ein mal nicht mehr!

  • Hallo und Morgen alle!

    folgenes Problem habe ich hier erst ein mal das Skript das auf ein mal nicht mehr Funkioniert.

    [autoit]

    #include <File.au3>
    #include <Array.au3>
    $sFileName = @ScriptDir & "\tt.txt"
    $aLines = ""

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

    _FileReadToArray($sFileName, $aLines) ;in Array einlesen
    _ArrayDelete($aLines, 0) ;störendes Element löschen
    ;jetzt im Array die Daten manipulieren
    $aLines[2] = $aLines[2] & " das ist angehängt"
    $aLines[4] = $aLines[4] & " das ist angehängt"
    _ArrayInsert($aLines, 5, "Diese Zeile ist ganz neu")
    _FileWriteFromArray($sFileName, $aLines) ;Array zurückschreiben

    [/autoit]

    Hier noch Infomationen meines Autoit Version ich habe die 3.3.6.1 und die Beiden Includes habe ich auch (File.au3)(Array.au3).

    mein Problem ist dieses er sagt mir beim ausführen des Skript das die zeile 9 und 10 keine Array wehren wobei ich die damals immer benutzt habe. oder kann es noch sein das ich die alten Includes habe da ich alle Includes aufhebe und beim Neu machen des Rechner denn Include Ordner ersetze.????

    nun was könnte der fehler auf ein mal sein Bitte um Hilfe.??????


    Gruß Baron

    • Offizieller Beitrag

    Laß dir mal das Array $aLines mit _ArrayDisplay ausgeben.
    Entweder ist die Inpudatei zu kurz (zu Wenig Zeilen) oder das lesen schlägt irgendwie fehl.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>
    $sFileName = @ScriptDir & "\tt.txt"
    $aLines = ""

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

    _FileReadToArray($sFileName, $aLines) ;in Array einlesen
    _ArrayDisplay($aLines)
    _ArrayDelete($aLines, 0) ;störendes Element löschen
    ;jetzt im Array die Daten manipulieren
    $aLines[2] = $aLines[2] & " das ist angehängt"
    $aLines[4] = $aLines[4] & " das ist angehängt"
    _ArrayInsert($aLines, 5, "Diese Zeile ist ganz neu")
    _FileWriteFromArray($sFileName, $aLines) ;Array zurückschreiben

    [/autoit]


    [OT]
    PS: Eigentlich sollte man von jemanden der AutoIt seit > 2 Jahren macht, erwarten können das er ein solch einfaches Script
    auch selbst zum laufen bekommt. So viele Fehlermöglichkeiten gibt es da auch nicht....
    [/OT]

  • Hier mal eine Fassung die wirklich jeden Fehler abdecken sollte:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>
    $sFileName = @ScriptDir & "\tt.txt"
    $aLines = ""

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

    if not FileExists($sFileName) Then
    MsgBox(0,"Fehler",$sFileName & " konnte nicht gefunden werden!")
    Exit
    EndIf

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

    if _FileReadToArray($sFileName, $aLines) <> 0 Then
    _ArrayDisplay($aLines)
    if $aLines[0] > 4 Then ; 5 bzw 4 (ohne array[0] dann) ist das Minimum für den letzten Arrayindex
    if _ArrayDelete($aLines, 0) = 0 Then
    MsgBox(0,"Fehler","Array Index 0 konnte nicht gelöscht werden. Fehlercode: " & @error)
    Else
    $aLines[2] = $aLines[2] & " das ist angehängt"
    $aLines[4] = $aLines[4] & " das ist angehängt"
    if _ArrayInsert($aLines, 5, "Diese Zeile ist ganz neu") = 0 Then ; achtung wenn du noch array inserts für index 6 und höher machen willst muss dies oben berücksichtigt werden oder du verwendest gleich _arrayadd()
    MsgBox(0,"Fehler","Neue Zeile konnte nicht eingefügt werden. Fehlercode: " & @error)
    Else
    if _FileWriteFromArray($sFileName, $aLines) = 0 Then MsgBox(0,"Fehler","Array konnte nicht in Datei geschrieben werden. Fehlercode: " & @error)
    EndIf
    EndIf
    Else
    MsgBox(0,"Fehler","Textdatei hat zuwenig Zeilen!")
    EndIf
    Else
    MsgBox(0,"Fehler","Datei konnte nicht in Array eingelesen werden. Fehlercode: " & @error)
    EndIf

    [/autoit]

    Gerade wenn man mit Arrays und Dateien arbeitet sollte man immer die Rückgabewerte prüfen und entpsrechend reagieren wenn es zu Fehlern kommt.

  • Habe es getestet und denn Fehler gefunden !

    der txt editor hat zu wenig Zeilen gehabt um es ein zu tragen wie Raupi schon sagte.

    darauf hätte ich nie gekommen das der Txt Editor vorher mehr Text zeilen erstellt werden müsste.


    Danke noch mal


    Gruß Baron