Autor Beitrag
ImInneren
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19
Erhaltene Danke: 1



BeitragVerfasst: Sa 28.03.15 12:22 
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?


Zuletzt bearbeitet von ImInneren am Sa 28.03.15 21:30, insgesamt 1-mal bearbeitet
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 28.03.15 14:04 
Wie schreibst du denn den Text in die Textdatei?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19
Erhaltene Danke: 1



BeitragVerfasst: 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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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 gibt es ein gutes Tutorial wie man sowas macht).

Und dann kann man auch einfach Filter darauf anwenden:
ausblenden C#-Quelltext
1:
2:
// Filterung von Allergenen, hier: glutenfrei
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:
ausblenden 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) // heißt es allergen?? :D 
        {
            textBox.AppenText("    " + allergen + Environment.NewLine);
        }
    }
}


Ich hoffe das hilft dir. Wenn dein Problem anderer Natur sein sollte, beschreibe es bitte etwas genauer.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler