writealllines ohne zeilenumbruch

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Gottric.

    writealllines ohne zeilenumbruch

    Hallo zusammen,
    habe leider zu meinem Problem nicht das passende gefunden. Ist es möglich mit

    VB.NET-Quellcode

    1. WriteAllLines
    wie zum beispiel mit

    VB.NET-Quellcode

    1. WriteAllText

    VB.NET-Quellcode

    1. .TrimEnd
    den letzten Zeilenumbruch aus dem zu speichernden Text einer Richtextbox rauszulöschen vor dem speichern?

    Hier die Zeile:

    VB.NET-Quellcode

    1. IO.File.WriteAllLines(Pfadprg45 + (lblAUFRUF45.Text) + ".prg", txt45AUFRUF.Lines)



    Vielen Danke für eure Antworten.
    @Gottric Pack den Text zeilenweise mit AppendLine in einen StringBuilder, die letzte Zeile mit Append.
    Allerdings halte ich den Aufwand für etwas überzogen.
    Hat das einen tieferen Sinn?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany geht dabei die RTF Formatierung nicht verloren?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo Jou.
    RTB.Lines enthält nur den unformatierten Text.
    Die formatierte Variante bietet keine Möglichkeit des nicht-formatierten Holzhammerzugriffs unter Erhalt der Formatierung.
    @Gottric Nutze die Speichern-Funktionalität der RTB selbst:

    VB.NET-Quellcode

    1. RichTextBox.SaveFile("Pfad", RichTextBoxStreamType.PlainText) ' den blanken Text
    2. RichTextBox.SaveFile("Pfad", RichTextBoxStreamType.RichText) ' den formatierten Text
    analog RichTextBox.LoadFile(...)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey @RodFromGermany,
    ja, es ist wichtig. Ich spiele Dateien auf eine Maschine auf welche dann leider, aus welchem Grund auch immer, die Daten nicht verwenden kann und mir einen Fehler ausgibt. Ich Speicher normalerweise aus einer richtextbox raus da lösche ich die letzte Zeile einfach vorher und alle passt. Ich habe aber nun ein Tool geschrieben um mehr Dateien gleichzeitig zu überschreiben. Habe es noch nicht getestet, aber von logischen her müsste die Maschinen nen Fehler schreiben. Wollte dies nur im Vorfeld umgehen, ich teste es erstmal, vielleicht funktioniert es ja auch. Trotzdem danke für die schnelle Antwort.

    Ich lass das Thema noch offen bis ich es endgültig geklärt habe.
    Muss es denn ne RTB sein? Wenn die Daten weiter verarbeitet werden langt doch ne normale (multiline) TextBox...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @Gottric Da dürfte die Formatierung natürlich egal sein. Solcgh ein Hinweis hätte in den Eröffnungspost gehört.
    Teste

    VB.NET-Quellcode

    1. Dim txt = RTB.Text.TrimEnd()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke dir/euch für die schnelle Hilfe.
    Als Text schreibt er alles in einer Reihe ohne die Zeilenumbrüche im Text zu beachten.
    Ich versuche es erstmal aufzuspielen auf dei Maschine, dann werde ich berichten.
    Ich hab in der zwischenzeit auch noch ein anders Problem zu lösen, werde dazu gleich ein Thema eröffnen.

    Gottric schrieb:

    Ich hab in der zwischenzeit auch noch ein anders Problem zu lösen, werde dazu gleich ein Thema eröffnen.


    Dann aber bitte direkt alle Infos. Sonst müssen wir hier wieder unnötig rum eiern ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Gottric schrieb:

    ohne die Zeilenumbrüche im Text zu beachten.
    Er tut es sehr wohl, jedoch sind die Zeilenumbrüche im Rich-Text nicht als { &H13, &H10 }, sondern als { &H10 } definiert.
    Füge da ein .Replace(vbLf, vbCrLf) ein und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    nochma zu post#1

    VB.NET-Quellcode

    1. WriteAllLines()
    ist eiglich sehr gut, und das Problem scheint zu sein, dass die letzte Zeile keine Leerzeile sein darf.
    Das musste halt programmieren.
    Mit txt45AUFRUF.Lines.ToList erhälst du eine Liste der Zeilen, und die kannste rückwärts durchlaufen, und alle Leerzeilen entfernen.

    Ich würde nicht den Gesamt-Text nehmen, und da die Zeilumbrüche selbst behandeln - mit .Replace(vbLf,...) fuhrwerken und so - zumal vbLf vb6-Ranz ist.
    Zeilumbrüche sind heikel (wie du gemerkt hast), also lass dir den Text vonne Richtextbox gleich als Zeilen richtig aufbereitet geben - dann brennt da nix an.
    Hallo, wie in Post 5 schon beschreiben werde ich die sache erstmal an der Maschine testen und euch dann Rückmeldung geben ob es funktioniert wenn ich die letzte von Hand rauslösche. Wie ich es die ganz Zeit mache. Sollte dies nicht der Fall sein werde ich versuchen eure Tips umzusetzten.
    Ich gebe euch dann sofort Rückmeldung. :)

    Momentan sitze ich noch an einem anderen Problem was Prio für mich hat. Habe ich auch hier gepostet, aber da hakt es ein wenig.

    tortzdem vielen Dank für eure bemühungen.