Entwickler-Ecke
IO, XML und Registry - ...in Textdatei schreiben
ImInneren - Sa 28.03.15 12:22
Titel: ...in Textdatei schreiben
Habe wieder eine Frage:
Ich schreibe meine Files jetzt doch in eine .txt-Datei.
Wichtige Dinge grenze ich in einer Zeile mit ";" ab, sodass ich später bis zum Semikolon lesen kann und so einzelne Komponenten wieder rausholen.
Jetzt möchte ich aber noch eine Beschreibung in mein Textdokument hinzufügen.
Dazu will ich den Text aus einer "RichTextBox" nehmen. Mein Problem:
Wenn ich den Text in die .txt-Datei mit rein schreiben will, gibt er mir nur eine Zeile aus und nimmt die Zeilenumbrüche nicht mit.
Wie krieg ich das hin?
Th69 - Sa 28.03.15 14:04
Wie schreibst du denn den Text in die Textdatei?
Ralf Jansen - Sa 28.03.15 14:05
Der Text enthält einen Zeilenumbruch. Das Problem ist eher welchen Zeilenumbruch es enthält und ob dein verwendeter Texteditor denn als Zeilenumbruch erkennt.
Notepad erkennt z.B. nur \r\n (bzw. in Hex 0D 0A) aber eine Richtextbox arbeit nun mal nach den Specs von rtf und da kommt nur \n als Zeilenumbruch raus.
Die Frage ist zuerst mal warum benutzt du eine RichTextBox und nicht einfach eine TextBox? Wenn das Problem ist das du die TextBox nur für Einzeilig hältst dann setzt mal die Multiline Property der TextBox dann ist die auch mehrzeilig.
ImInneren - Sa 28.03.15 14:15
Von RichTextBox auf TextBox zu gehen war perfekt o.O
Ja, hab echt gedacht, die eine wäre nur einzeilig :D
Aber dass das so einen Unterschied macht, hätte ich nicht gedacht. :/
Sicher arbeite ich an meinem Projekt ehh etwas zu kompliziert xD
Aber solange es funktioniert :)
ImInneren - Sa 28.03.15 21:31
Weitere Frage zur TextBox:
Kann ich in einer TextBox sogenannte "Tags" hinterlegen, dass ich später, wenn z.B. ein Rezept "Glutenfrei" ist und das unter dem Punkt Allergene: im .txt steht, das rausfinden, wenn ich im Programm was mit "Glutenfrei" suche?
C# - So 29.03.15 00:26
Hallo,
wenn ich das richtig verstehe, hast du eine Textdatei. In dieser Datei sind Rezepte aufgelistet. Und in jedem Rezept gibt es eine Eigenschaft "Allergene". Stimmt das alles so?
Wenn nicht musst du uns mal zeigen, wie die Textdatei genau aufgebaut ist.
Für mich klingt das bisher so, als ob du einfach die komplette Textdatei in die TextBox schreibst. Das macht das Anwenden von diversen Filtern (wie z.B. "Allergene") recht schwierig bzw. umständlich. Einfacher wäre es, wenn du z.B. eine Klasse anlegst:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| class Rezept { public string Name { get; set; } public List<string> Zutaten { get; set; } public List<string> Allergene { get; set; } } |
Die Rezepte behandelst du dann im Programm einfach als Liste:
C#-Quelltext
1:
| List<Rezepte> alleRezepte; |
Diese Liste kannst du dann z.B. über XML Serialisierung ganz einfach in einer XML Datei speichern und auch laden (
hier in der EE [
http://www.entwickler-ecke.de/topic_Mit+XmlSerializer+Objekte+als+XML+speichern+und+laden_64947.html] gibt es ein gutes Tutorial wie man sowas macht).
Und dann kann man auch einfach Filter darauf anwenden:
C#-Quelltext
1: 2:
| List<Rezepte> glutenfreieRezepte = alleRezepte.Where(rezept => rezept.Allergene.Contains("glutenfrei")).ToList(); |
In einer TextBox (würde ich persönlich nicht nehmen, lieber eine ListView o.ä.) könntest du dann die übrigen Rezepte anzeigen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| void UpdateText() { textBox.Clear(); foreach (Rezept rezept in glutenfreieRezepte) { textBox.AppendText("Rezept: " + rezept.Name + Environment.NewLine); textBox.AppendText(" Zutaten:" + Environment.NewLine); foreach (string zutat in rezept.Zutaten) { textBox.AppenText(" " + zutat + Environment.NewLine); } textBox.AppendText(" Allergene:" + Environment.NewLine); foreach (string allergen in rezept.Allergene) { textBox.AppenText(" " + allergen + Environment.NewLine); } } } |
Ich hoffe das hilft dir. Wenn dein Problem anderer Natur sein sollte, beschreibe es bitte etwas genauer.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!