Spalte lesen und schreiben

  • Hallo,

    folgendes Problem:
    Ich habe mit Hilfe eines 2dArrays eine Textdatei erstellt.
    Ich muß nun die erste Spalte lesen.
    Im Beispiel soll
    Text 1
    Text 2
    Text 3
    Text 3
    durch einen neuen Text ersetzt werden. (StringReplace, regex...)
    kann ich nicht verwenden da alle Texte sich ändern.
    Die Spalte bleibt immer gleich.

    Die Textdatei

    Spoiler anzeigen


    4|4|||||||||||||
    Text 1|Arial|0|10|10|200|60|0x0000000003D29F20|0x0000000003877F10|64321440|64321824||||
    Text 2|Arial|0|10|10|200|60|0x0000000003DD4ED0|0x0000000003877F10|64518432|64511168||||
    Text 3|Arial|0|10|10|200|60|0x0000000003D85E40|0x0000000003877F10|64524544|64524928||||
    Text 4|Arial|0|10|10|200|60|0x0000000003D85EB0|0x0000000003877F10|65010432|65010816||||

    Also:
    Text 1 wird gelesen, wenn fertig dann ersetzt durch neuer Text
    Text 2 wird gelesen, wenn fertig dann ersetzt durch z.B. anderer Text

    am Ende wird alles in eine neue Textdatei gespeichert.
    Im Prinzip wird nur die Spalte 1 bearbeitet.

    Habe mit Filereadline u. Stringsplit probiert
    bin aber nicht ans Ziel gekommen.


    Liebe Grüß
    Ilse ;)

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>

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

    ; Create 2D Array mit allen Informationen
    Local $allInfo_A[1]
    Local $s_A = 0
    Local $z_A = StringSplit(StringStripCR(FileRead("ilse.txt")), @LF, 2)

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

    StringReplace($z_A[1], '|', '|')
    Local $sCount= @extended +1

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

    ReDim $allInfo_A[UBound($z_A)][$sCount]

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

    For $z = 1 To UBound($z_A) - 1
    $s_A = StringSplit($z_A[$z], '|', 2)
    For $y = 0 To UBound($s_A) - 1
    $allInfo_A[$z][$y] = $s_A[$y]
    Next
    Next

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

    _ArrayDisplay($allInfo_A)

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

    For $z = 1 To UBound($allInfo_A)-1
    $allInfo_A[$z][0] = 'ERSETZT : ' & $z & ' ' & @SEC
    Next

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

    _ArrayDisplay($allInfo_A)

    [/autoit]
    • Offizieller Beitrag

    Oder so:

    Spoiler anzeigen
    [autoit]


    Global $aNewText[5] = [4, "Neuer Text 1", "Neuer Text 2", "Neuer Text 3", "Neuer Text 4"], $aRow[5]

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

    $hFile = FileOpen(@ScriptDir & "\ilse.txt", 0) ; Datei zum lesen öffnen
    If $hFile = -1 Then Exit MsgBox(0, "Fehler", "Konnte Datei nicht zum lesen öffnen.")
    $aRow[0] = FileReadLine($hFile)
    For $i = 1 To 4
    $aRow[$i] = FileReadLine($hFile)
    $aRow[$i] = StringRegExpReplace($aRow[$i], ".+?(\|.+)", $aNewText[$i] & "$1", 1)
    Next
    FileClose($hFile)

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

    $hFile = FileOpen(@ScriptDir & "\ilse.txt", 2) ; Datei zum schreiben öffnen
    If $hFile = -1 Then Exit MsgBox(0, "Fehler", "Konnte Datei nicht zum schreiben öffnen.")
    FileWriteLine($hFile, $aRow[0])
    For $i = 1 To 4
    FileWriteLine($hFile, $aRow[$i])
    Next
    FileClose($hFile)

    [/autoit]