Datenfiles editieren

  • Servus

    Was möchte ich tun:
    Datei öffnen
    Inhalt zeilenweise lesen (ab einer bestimmten Zeile)
    Zeile editieren
    Zeile zurückschreiben (ersetzen der gelesenen Zeile)
    nächste Zeile lesen
    usw.
    Datei schliessen

    Manchmal soll auch eine neue Zeile eingeschoben (nicht angehängt) werden.
    Letzteres ist mir so schon gelungen:

    [autoit]

    _FileWriteToLine("d:\test\file.abc", $zeilennummer, $zeile, 0)

    [/autoit]


    (aber auch nicht immer) ?(


    Für Erstes wollte ich so vorgehen:

    [autoit]

    $fhandle = FileOpen("d:\test\file.abc", 0) ; Datei zum lesen öffnen
    $zeile = FileReadLine($fhandle, $zeilennummer) ; Zeile lesen; $zeilennummer wird vorher gesetzt oder abgefragt
    while $zeile ;solange es Zeilen gibt
    $zeileneu = geänderte Zeile ; (editieren ist kein Problem)
    _FileWriteToLine("d:\test\file.abc", $zeilennummer, $zeileneu, 1) ;Zeile zurückschreiben
    $zeilennummer = $zeilennummer + 1 ;Zeilennummer weiterzählen
    $zeile = FileReadLine($fhandle); nächste Zeile lesen
    WEnd
    FileClose($fhandle) ; Datei schliessen

    [/autoit]

    Leider funktionierts so nicht (das Zurückschreiben) -
    * weil das hier was damit zu tun hat? :
    [ offen ] Anfänger Frage
    * oder der Fehler wo? liegt?
    * oder würdet Ihr das ganz anders machen? (vielleicht gibts ja überhaupt was besseres dafür - als Anfänger sind mir ja noch viele Funktionen unbekannt ;) )

    SG,
    entsel

    Schöne Grüße,
    entsel
    AutoLisp(eln) geht ganz gut, aber AutoIt nur mit Dictionary. 
    Das Problem - man sollte wissen, welche Vokabel man sucht.

    Einmal editiert, zuletzt von entsel (23. Januar 2012 um 19:51)

  • Du solltest die Datei, die mit FileOpen zum LESEN geöffnet wurde mit FileClose wieder schließen, bevor du zurückschreibst

    UNPLEASANT SPOILER

    You just lost the game!

  • Hallo entsel,

    warum liest du nicht mit

    [autoit]

    _FileRadToArray

    [/autoit]

    alles in ein Array, manipulierst dann dort die Daten und schreibst das ganze mit

    [autoit]

    _FileWriteFromArray

    [/autoit]

    wieder in eine Datei,

    mfg autoBert

  • Hallo Ihr,

    Hab jetzt versucht, Eure Tipps umzusetzen - es ging nicht, anders probiert, und, und ,und ... es ging nicht.
    Bis ich jetzt draufgekommen bin - das File war .... ich fass es nicht - schreibgeschützt !

    Ich verzieh mich ins Winkerl - eine Runde schämen!

    SG, entsel

    Schöne Grüße,
    entsel
    AutoLisp(eln) geht ganz gut, aber AutoIt nur mit Dictionary. 
    Das Problem - man sollte wissen, welche Vokabel man sucht.