C# Text aus Textdatei einlesen, kürzen und in TextBox darstellen

ZBerryGreen

Cadet 1st Year
Registriert
Nov. 2018
Beiträge
15
Hey Community,
ich weiß einfach langsam nicht mehr weiter. Ich habe alles mögliche versucht und das Internet von oben bis unten durchforstet, aber nichts gefunden was zu meinem Problem passt.

Folgende Sachlage:
In meinem Programm kann man in TextBoxen Werte eintragen. Zum Beispiel einen Namen :
Unbenannt.PNG



Sobald ich dann auf einen Button drücke werden alle Werte Zeile für Zeile in ein Textdokument geschrieben. Das klappt alles - soweit so gut. Im Textdokument steht dann nicht nur der Wert den ich eingetragen habe, sondern auch das was davor steht. Also wenn ich wie auf dem Bild bei "Kunde" den Wert "??" eintrage, dann steht im Textdokument "Kunde=??". Das soll und muss auch ganz genau so sein.

Unbenannt1.PNG



In dem Programm gibt es ungefähr 50 Felder in denen man etwas eintragen kann.
Damit man nicht immer alles neu machen muss soll es einen Button geben der durchs drücken die Werte aus der Datei ausliest und in die jeweilige TextBox packt. Bisher ist es mir nur gelungen die gesamte Zeile auszulesen:

Unbenannt2.PNG


Das soll aber nicht so sein. Wenn ich den Button für "Datei einlesen" drücke soll er nur der vorher eingetragen Wert eintragen, also in diesem Fall die beiden "??". Leider weiß ich nicht mehr weiter und hoffe ihr könnt mir helfen :)
 
Kannst Du an der Stelle nicht ein simples Substring ausführen und alles von Anfang bis zum = wegschneiden?
 
  • Gefällt mir
Reaktionen: ZBerryGreen
Mit einem
Code:
string.Split('=')
kriegst du ein Array ( string[] ), was in [0] den Schlüssel (Kunde) und in [1] den Wert (??) hält.
Du kannst dann aussuchen, ob du den Schlüssel zuweisen möchtest um dein Textdokument von der Reihenfolge unabhängig zu machen, oder ob du stumpf das Feld [1] ausließt.
 
  • Gefällt mir
Reaktionen: ZBerryGreen
Genau, das mit dem string.Split habe ich schon versucht. Er hat mir immer Fehler angezeigt, egal was ich reingeschrieben habe, und egal wo ich es positionert habe. Ich weiß leider echt nicht wie ich den Code schreiben soll...

Aktuell sieht es wie folgt aus. Und damit macht er auch das was ich oben beschrieben habe. Wo muss ich das mit dem split einfügen?
Unbenannt.PNG
 
C#:
readLines[1].Split('=')[1]

Problem bei dem Split-Ansatz ist, dass du Probleme bekommen wirst sobald in deine Textboxen auch ein = eingetragen wird.
 
  • Gefällt mir
Reaktionen: ZBerryGreen
Oh super Sache. Danke @Defender1st !
Es hat funktioniert. Genau das habe ich gebraucht und hat mir wirklich weitergeholfen. Vielen Dank! :)
 
Denk dran dass in C# alles 0-basiert ist.

In dem Programm gibt es ungefähr 50 Felder in denen man etwas eintragen kann.
Damit man nicht immer alles neu machen muss soll es einen Button geben der durchs drücken die Werte aus der

Die Frage ist ob du dir damit nicht etwas viel Aufwand machst. Wenn das 50 Textboxen sind bist du schneller wenn du ein DataGrid nimmst, dann musst du nicht jede einzelne Textbox ansprechen...
 
@ZBerryGreen gern.

Ein bisschen dynamischer wird es, wenn du mit Substring arbeitest. Dann kannst du auch in deiner Textbox nen = verwenden.
Z.B. so:

C#:
readLines[1].Substring(readLines[1].IndexOf('=')+1)
 
  • Gefällt mir
Reaktionen: HardRockDude
Wenn ich mal so blöd fragen darf - was genau ist da so anders als bei dem "einfacheren" Befehl?
 
Sagen wir, in deiner Textdatei steht dann so was:

Kunde=TestKunde=NeuerKunde

Mit dem Split-Ansatz würdest du in deine Textbox nur 'TestKunde' rein bekommen, da dein Array 3 Elemente hat (Kunde, Testkunde, NeuerKunde).

Mit dem Substring-Ansatz nimmst du halt alles ab dem ersten = im String.
 
Blöde Frage, wieso das ganze nicht in einer XML oder Json formartierten Datei speichern? Anforderung ist ja nicht, dass die Datei menschenleserlich sein muss.

Da kann man das ganze dann schön per Parser aus der Datei ziehen, welcher das auf eine Entity mappt. Diese Entity dann anzeigen. Das json File kann man dann dementsprechend auch einfach erstellen.
 
@Trippley: Weil unser TE mit einem Split schon nicht klar kommt. Er ist offensichtlich noch am Anfang des Programmierens. Da gleich einen Parser für JSON-Files vorzuschlagen ist mächtig über das Ziel hinausgeschossen.

@ZBerryGreen: Defender1st hat natürlich recht, es gibt Fälle, in denen "Split" ein dummer Ansatz ist - nämlich wenn dein Separator (das = Zeichen) auch im Schlüssel oder Wert ein gültiges Zeichen ist. Um so einen Fall zu behandeln müsste man wissen, was alles erlaubte Werte sind.
 
Danke für all eure Antworten. Ich muss ehrlich sagen das ich mit JSON-Files absolut nichts anfangen kann. Tatsächlich bin ich noch Anfänger, daher versuche ich mir alles durch Learning-by-Doing beizubringen und Leute wie euch sind mir dabei eine sehr große Hilfe :)
 
@SoDaTierchen Aber ein Textfile manuell zu parsen ist die richtige und einfachere Rangehensweise? Vor allem wenn in diesem Sinne gleich ein Workaround vorgeschlagen wird welcher ein enormer Code Smell wäre.

@ZBerryGreen JSON ist ein Notationsverfahren um Objekte zu spezifizieren. Man kann damit super einfach Daten die du im Programm definierst abbilden. Eine JSON Datei kann dann automatisch von deinem Datenmodell aus einem Objekt erstellt werden. (Oder auch du schreibst eine neue Klasse mit all den verschiedenen Datentypen wie z.B. "public string Kunde {get; set;}" und lässt dir deine zu speichernden Daten automatisch erstellen ohne das du irgendwas auseinander trennen musst.
 
Zurück
Oben