Textzeile aus Datei neu zusammensetzen

  • hallo erstmal, bin noch Neuling auf dem Gebiet,
    ich suche mir schon die Finger wund in eurem Forum,konnte aber leider noch nichts passendes finden
    Ich wollte ein Script erstellen das mir aus einer Textdatei, aus jeder Zeile die ersten vier Zeichen
    durch einen konstante Zeichenfolge1 und an das Ende jeder Zeile eine konstante Zeichenfolge2 anfügt.


    also vorher:

    ab zeile1
    bc zeile2
    de zeile3
    .
    .
    .

    Zeichenfolge1= vorn
    Zeichenfolge2= hinten

    Nachher:

    vornzeile1hinten
    vornzeile2hinten
    vornzeile3hinten
    .
    .
    .

    Ich wollte fragen ob mir nicht jemand einen Tip geben kann.
    vielen Dank im vorraus. :)

  • Hallo!

    aber schön damit rumprobieren wenn das nicht zwischen Deinen Ohren ankommt, dann nützt das nichts.

    Wenn was unklar ist FRAGEN.

    Das geht mit weniger Code zu programmieren, aber dann versteht man als Anfänger gar nichts mehr.

    Grüße

    German

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; test_62.au3
    ; Zeilenweise einlesen und Zeilen umkonvertieren

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

    #include <array.au3>
    #include <file.au3>

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

    $Filetochange="F:\nix99\vornachname.txt" ;= die alte Datei
    $newfile="F:\nix99\fertig.txt" ;=die Zieldatei

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

    Dim $aRecords ; das ist die alte Datei
    Dim $bRecords ; das ist die neue Datei

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

    If Not _FileReadToArray($Filetochange,$aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $x = 1 to $aRecords[0] -1 ; lesen der Filetochange bis zur letzten Textzeile im aRecord[$x] $x ist der Zähler
    ; steht die Datei jetzt Zeilenweise
    ; das -1 sonst kommt auch noch der Zeilenumbruch der letzten Zeile!!!

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

    $line = $aRecords[$x] ;=die alte Datei Zeilenweise

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

    $newstring1=StringTrimLeft($line,4) ;von der alten Zeile die ersten 4 zeichen weg und nach $newstring1
    $newstring2=$newstring1 & "hinterndran" ;newstring1 und anfügen an die Zeile
    $aRecords[$x]=$newstring2 ;zuweisen der 2xformatierten Zeile in das array (damit die alte Zeile überschrieben wird

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

    Next

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

    _arraydisplay($aRecords,"färdich") ;anschauen, wenn Du Lust hast

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

    _FileWriteFromArray($newfile,$aRecords,1) ; rausschreiben in die Zieldatei $newfile

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


    Integrator(RS)

  • cool Danke, das Script funktioniert super, bis auf zwei kleine Mängel, die letzte Zeile meines Text-Files bleibt unbearbeitet und am Anfang der "Fertig"-TextDatei bleibt noch eine Leerzeile;-) aber das krieg ich schon irgendwie hin. Das Grundprinzip hab ich schon mal gerafft :)
    Danke

    • Offizieller Beitrag
    [autoit]

    For $x = 1 to $aRecords[0] -1

    [/autoit]


    Deshalb nimmt er die letzte Zeile nicht. Auch wenn es bequem scheint, die zurückgegebene Anzahl aus Array[0] zu verwenden, so rate ich doch davon ab. Sind z.B. 5 Zeilen, so hätte das Array 6 Elemente, da in [0] die Anzahl steht. Somit ist -1 nicht erforderlich.
    Gleich dran gewöhnen immer mit Ubound(Array)-1 zu arbeiten. Dann gibt es keine Irritationen. ;)