Announcement

Collapse
No announcement yet.

Unix-Format nach Windows-Format

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unix-Format nach Windows-Format

    Hallo,
    ich habe mal wieder eine Frage. Wenn ich folgenden Code benutze:

    Dim sw As StreamWriter = New StreamWriter(mSave.FileName, False, Encoding.Default)

    sw.Write(RTB.Text)

    sw.Flush()

    sw.Close()

    schreibe ich den Text im Unix.Format. Diesen kann aber z.B. Notepad nicht richtig lesen. Jetzt meine Frage: Wie schreibe ich den Text im Window-Format?

    MfG
    Ne discere cessa - Höre nicht auf zu lernen.

  • #2
    Woran erkennst du das hier das Unix-Format verwendet wird?

    Comment


    • #3
      @Bernhard Geyer,

      Woran ich das erkenne? Wenn ich den gespeicherten Text mit Notepad öffne wird dieser fehlerhaft angezeigt. Ist ja auch logisch, denn das Unix-Format verwendet nur Carriage-Return = Chr(13). Windows hängt allerdings Line-Feed = Chr(10) dran. Soweit zu deiner Frage. Hast du vielleicht einen Tip für mich?
      Ne discere cessa - Höre nicht auf zu lernen.

      Comment


      • #4
        Dann liegt es nicht am Encoding und der Fehler lieg im RTB-Control welches CR/LF "falsch" speichert. AFAIK ist der StreamWriter gar nicht für die "richtige" Codierung eines Zeilenwechsel zuständig. Entweder das RTB-Control hat ein entsprechends property oder du mußt eine .NET-Stringreplace-Methode suchen welche CHR(13) nach Chr(13)Chr(10) ersetzt.

        Comment


        • #5
          Danke für den Hinweis.

          MfG
          Ne discere cessa - Höre nicht auf zu lernen.

          Comment


          • #6
            @Bernhard Geyer,

            hallo ich bin es noch mal. Du hast Recht das liegt nicht am Encoding. Allerdings wird CR/LF nicht falsch gespeichert. Vielmehr ist es wohl eine Eigenart der
            RichTextBox selbst. Denn die Richtextbox schreibt den Text nur mit abschließenden Line-Feed = Chr(10). Egal wie dem auch sei, ich habe das ausgenutzt und den Code wie folgt geändert.

            Dim sw As StreamWriter = New StreamWriter(mSave.FileName)
            'Schreiben im UNIX-Format
            'sw.Write(RTB.Text)

            'Schreiben im Windows-Format (neu hinzugefügt)
            Dim sw1 As String = RTB.Text
            sw1 = sw1.Replace(ControlChars.Lf, ControlChars.CrLf)


            sw.Write(sw1)
            sw.Flush()
            sw.Close()

            Dadurch besteht jetzt die Möglichkeit den Inhalt der RichTextbox sowohl als Uni-Code als auch im Windows-Format zu schreiben. Fairerweise muss ich noch sagen das mich erst ein Mitstreiter auf den Gedanken gebracht hat. Ich schreibe dies nur für den Fall das andere erst gar keine Probleme mit dem codieren bekommen.

            Mit freundlichen Grüssen

            Skyguard
            Ne discere cessa - Höre nicht auf zu lernen.

            Comment

            Working...
            X