Laden...

Zeilenumbrüche werden (scheinbar) nicht gespeichert

Erstellt von Trekki1990 vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.928 Views
Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 15 Jahren
Zeilenumbrüche werden (scheinbar) nicht gespeichert

Hallo liebe Community,

folgendes Problem:

Ich habe eine richTextBox in der ganz normaler Text steht. Diesen Text wollte ich ganz normal als .txt speichern. Wenn ich diesen Text jedoch dann mit dem Windows-Editor öffne, sind keine Zeilenumbrüche vorhanden. Ich denke es liegt an der falschen Codierung mit der der Text gespeichert wird.
Habe auch schon die SuFu bemüht aber nichts richtiges gefunden.
Ich habe auch schon probiert mit

System.Text.Encoding

was anzufangen, aber irgendwie komme ich nicht weiter.
Tipps und Denkanstöße würden mir sehr helfen.
Danke schonmal.

Gruß Trekki

731 Beiträge seit 2006
vor 15 Jahren

Hi Trekki1990,

bist du dir denn auch sicher das dein Text Zeilenumbrüche enthält und den angezeigten Text nicht nur aufgrund der Control-Breite umbricht?
Sorry für die Frage, doch ich habe inzwischen gelernt immer mit der simpelsten Fehlerquelle zu beginnen... 😉

MfG
wax

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 15 Jahren

Naja ich schreibe in meiner Anwendung Text und drücke ENTER.
Für mich ist das ein Zeilenumbruch, oder etwa nicht?

2.760 Beiträge seit 2006
vor 15 Jahren

Schau mal im Debugger ob du die entsprechenden Steuerzeichen nachher im String wiederfindest ("\r\n"). Am Encoding dürfte das eher nicht liegen.

Bzw. wie speicherst du den Text ins File?

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 15 Jahren
private void speichernUnterToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Datei speichern
            int save = Einstellungen.Default.autominimieren;
            Einstellungen.Default.autominimieren = 0;

            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.InitialDirectory = ".";
            saveFileDialog1.RestoreDirectory = false;
            saveFileDialog1.Filter = "Text-Dateien (*.txt)|*.txt|RTF-Dateien (*.rtf)|*.rtf|JScript-Dateien (*.js)|*.js|VBScript-Dateien (*.vbs)|*.vbs|CS-Dateien (*.cs)|*.cs|HTML-Dateien (*.html)|*.html|Alle Dateien |*";
            saveFileDialog1.FilterIndex = 1;

            switch (saveFileDialog1.ShowDialog())
            {
                case DialogResult.OK:
                    Save(saveFileDialog1.FileName);
                    this.Refresh();
                    Einstellungen.Default.autominimieren = save;
                    break;

                case DialogResult.Cancel:
                    this.Refresh();
                    Einstellungen.Default.autominimieren = save;
                    break;
            }
        }
        private void Save(string dateiname)
        {
            try
            {
                StreamWriter sw = new StreamWriter(dateiname);
                sw.Write(richTextBox1.Text);
                sw.Close();
                MessageBox.Show("Datei erfolgreich gespeichert!", "Hinweis");*/
            }
            catch (IOException ioex)
            {
                MessageBox.Show("Datei konnte nicht gespeichert werden! (002)\n\n" + ioex.Message, "Fehler");
            }
        }

Damit mache ich das. Ein ganz normaler StreamWriter.

J
15 Beiträge seit 2008
vor 15 Jahren

Das Problem ist, dass die RichTextBox einen Unix-Zeilenumbruch ('\n') verwendet und nicht einen windowsartigen ('\r\n'). Der Windows-Editor kann jedoch nur mit denjenigen von Windows umgehen.

Weitere Informationen zu Zeilenumbrüchen: http://de.wikipedia.org/wiki/Zeilenumbruch

Lösung: Am besten schreibst du die Datei Zeile für Zeile

using(StreamWriter writer = new StreamWriter(file))
{
  foreach (string line in richTextBox.Lines)
  {
     writer.WriteLine(line);
  }
}
5.742 Beiträge seit 2007
vor 15 Jahren

Lösung: Am besten schreibst du die Datei Zeile für Zeile

Bzw. ersetzest '\n' durch Environment.NewLine.

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 15 Jahren

Danke! 😃
Funzt perfekt.

F
10.010 Beiträge seit 2004
vor 15 Jahren

Nur mal so als Frage, wenn du eine RTB benutzt, warum vernichtest du dann
die Formatierung?