Textdateien effizient editieren

  • Hi,
    im neuen AutoIt gibt es ja jetzt mehr Optionen, Dateien zu editieren.
    Bisher mache ich es ja so: Die komplette Datei in einem String eingelesen, mit StrRepl, dann bestimmte Werte geändert, und dann den ganzen String reingeschrieben und dann abgespeichert. Nur kommt es mir ein bisschen umständlich vor, die kompletten 2000 Zeilen zu kopieren, das Wort zu ersetzen und dann die Datei mit 2000 Zeilen neu anzulegen.
    Mit FileSetPos, FileFlush ist ja jetzt gleichzeitiges Lesen und schreiben möglich. Ich kann damit bestimmte Textstellen gezielt herauslesen, ich kann an bestimmten Stellen Text gezielt einfügen. Aber ich kann nichts gezielt ändern? So bleibt mir wieder nichts übrig als den ganzen Text in einem String zu schreiben und die komplette Datei komplett neu anzulegen ?! Vermutlich macht es bei einer Speicherung aber keinen Unterschied wieviel ich ändere, da die Größe identisch ist ??
    Soviele Fragen, ich weiß...
    EDIT:
    In dieser Stunde habe ich dann doch noch selbst was gefunden für die Anforderungen:

    Code
    $datei = FileOpen('temp2.txt', 1)
    FileSetPos($datei, 40, 0)
    $a = FileRead($datei, 25)
    $b = StringRegExpReplace($a, '(?m)(?i:^wert1.*$)', 'wert1 = AndererWert ', 1) ; bei "bis-Zeilenende-ersetzen" sollte nach dem zu schreibenden Wert ein Leerzeichen folgen !
    FileSetPos($datei, 40, 0)
    FileWrite($datei, $b)
    FileClose($datei)

    2 Mal editiert, zuletzt von mille86 (2. Februar 2010 um 20:35)