Hilfe bei Abspeichern von Eingegebenen Texten

05/28/2017 22:06 Aywy.#1
HeyHo!,

ich versuche gerade mir selbst C# durch das Internet bei zu bringen und bin
leider an einem kleinem Problem hängen geblieben.

Vorweg der Code :


Mein Problem ist nun das ich das was man unter Allgemein noch zusätzlich eintragen könnte, nicht abspeichern kann, sodass es dann beim nächsten Programm Start auch verfügbar ist. Wie könnte ich das regeln ? Was genau muss ich dazu lernen ?
05/28/2017 22:20 0x6a6b#2
Also das Beste währe hier vermutlich Json in verbindung mit einem Daten-Objekt zu verwenden.
Dazu holst du dir per NuGet-Befehl Newtonsoft.Json (Install-Package Newtonsoft.Json) (Google ist dein Freund)

Danach erstellst du dir eine daten-Klasse wie Beispielsweise die hier:
Code:
public class Data
	{
		public string Allgemein { get; set; }
		public string Wichtig { get; set; }
		public string Geburtstag { get; set; }
		public string Ergebnis { get; set; }
		public string Time { get; set; }
		public string Hinzufügen { get; set; }
		public string Antwort { get; set; }
	}
Danach kannst per System.Io prüfen ob deine Storage-Datei da ist, wenn nicht, dann instanzierst du ein neues Objekt von unserem "Data"-Typ, wenn schon, dann deserialisieren wir die daten im Storage file:
Code:
Data myStor;
			if (File.Exists("MyStorage.stor"))
			{
				var rawStor = File.ReadAllText("MyStorage.stor");
				myStor = Newtonsoft.Json.JsonConvert.DeserializeObject<Data>(rawStor);
			}
			else
			{
				myStor = new Data();
			}
Am ende müssen wir das ganze ja wieder in eine datei stopfen, um das zu machen kannst du wieder Newtonsoft verwenden:
Code:
File.WriteAllText("MyStorage.stor",Newtonsoft.Json.JsonConvert.SerializeObject(myStor));
Um dir das zu sparen, heisst das nicht am ende deines programms schreiben zu müssen, kannst du das auch in den destruktor unserer daten klasse schreiben:
Code:
~Data()
		{
			File.WriteAllText("MyStorage.stor", Newtonsoft.Json.JsonConvert.SerializeObject(this));
		}
*Hust* Ich hab ja ganz vergessen dir zu sagen wie man dieses daten-objekt verwendet :P
Beispielsweise
Code:
myStor.Allgemein = Console.ReadLine();
05/29/2017 10:22 Aywy.#3
Hört sich für mich als kompletter Anfänger etwas kompliziert an, aber ich google mich darüber schlau ;) Danke dir !
05/29/2017 10:46 .QaDusch#4
Wäre es nicht einfacher, vor allem für einen Anfänger, einfach nen Array zu verwenden oder ne List und dort alle Einträge abzuspeichern und wenn man das Programm beendet dann die Einträge einfach in eine .txt Datei schreibt?

Wenn man dann das Programm startet einfach diese Datei auslesen und in nen Array oder eben in eine List rein?

Später kann man das natürlich alles verfeinern, sollte aber für den Anfang reichen und bringt ihm die Basics wie Array oder StreamWriter/Reader (Hier ist das Stichwort um Sachen in eine Datei zu schreiben bzw zu lesen) etc bei.
@[Only registered and activated users can see links. Click Here To Register...]
05/29/2017 15:54 Aywy.#5
Quote:
Originally Posted by .QaDusch View Post
Wäre es nicht einfacher, vor allem für einen Anfänger, einfach nen Array zu verwenden oder ne List und dort alle Einträge abzuspeichern und wenn man das Programm beendet dann die Einträge einfach in eine .txt Datei schreibt?

Wenn man dann das Programm startet einfach diese Datei auslesen und in nen Array oder eben in eine List rein?

Später kann man das natürlich alles verfeinern, sollte aber für den Anfang reichen und bringt ihm die Basics wie Array oder StreamWriter/Reader (Hier ist das Stichwort um Sachen in eine Datei zu schreiben bzw zu lesen) etc bei.
@[Only registered and activated users can see links. Click Here To Register...]

Bin jetzt leider noch nicht dazu gekommen das alles nach zu schauen, da ich gerade auf der Arbeit bin, hört sich aber einfacher an als die erste Möglichkeit die mir angeboten wurde :)

Soll also heißen es wird einfach alles in eine Liste eingespeichert und danach, also beim Starten des Programmes wieder ausgelesen ? ( StreamWriter/Reader -> Schaue ich mir dann alles in Ruhe zuhause an ;) )
05/29/2017 15:58 .QaDusch#6
Quote:
Originally Posted by Lv.99 View Post
Bin jetzt leider noch nicht dazu gekommen das alles nach zu schauen, da ich gerade auf der Arbeit bin, hört sich aber einfacher an als die erste Möglichkeit die mir angeboten wurde :)

Soll also heißen es wird einfach alles in eine Liste eingespeichert und danach, also beim Starten des Programmes wieder ausgelesen ? ( StreamWriter/Reader -> Schaue ich mir dann alles in Ruhe zuhause an ;) )
Wenn du das so programmierst, dann ja.
Schau dir einfach mal den Array an, sollte erst mal "einfacher" erscheinen.
Wenn Interesse besteht dann die List.

Mit dem StreamWriter kannst du dann, immer wenn du das Programm schließt, alles vom Array in eine Datei schreiben lassen.

Mit dem StreamReader kannst du dann, immer wenn du das Programm öffnest, alles aus der Datei wieder in ein Array packen.
05/30/2017 03:25 0x6a6b#7
*Hust*File.ReadAllLines*Hust*File.WriteAllLines

Des weiteren wäre meine lösung die bessere, da Newtonsoft für dich die ganze Arbeit macht.
Außerdem sieht der code dann gleich viel schöner aus und man kann das ganze beliebig erweitern und man muss nicht irgendwie mit arrays rumfrickeln.

@TE: Was genau ist denn unverständlich an meiner lösung? Ich hab dir praktisch den code geliefert, du musst hier nur noch etwas copy&pasten Oo
05/30/2017 09:50 .QaDusch#8
Quote:
Originally Posted by 0x6a6b View Post
*Hust*File.ReadAllLines*Hust*File.WriteAllLines

Des weiteren wäre meine lösung die bessere, da Newtonsoft für dich die ganze Arbeit macht.
Außerdem sieht der code dann gleich viel schöner aus und man kann das ganze beliebig erweitern und man muss nicht irgendwie mit arrays rumfrickeln.

@TE: Was genau ist denn unverständlich an meiner lösung? Ich hab dir praktisch den code geliefert, du musst hier nur noch etwas copy&pasten Oo
Du siehst doch selber das er derzeit mit der Console arbeitet bzw lernt, weswegen Begriffe wie "Daten-Objekt", "NuGet-Befehl", "daten-Klasse", "instanzierst", "deserialisieren" und "destruktor" umso verwirrender sind und er meiner Meinung nach erst mal weiter die Basics lernen sollte, dazu gehören eben Arrays. Später kann er sich dann mit Klassen beschäftigen bzw das selbe Programm mit Klassen realisieren.
05/30/2017 13:27 Aywy.#9
Quote:
Originally Posted by 0x6a6b View Post
*Hust*File.ReadAllLines*Hust*File.WriteAllLines

Des weiteren wäre meine lösung die bessere, da Newtonsoft für dich die ganze Arbeit macht.
Außerdem sieht der code dann gleich viel schöner aus und man kann das ganze beliebig erweitern und man muss nicht irgendwie mit arrays rumfrickeln.

@TE: Was genau ist denn unverständlich an meiner lösung? Ich hab dir praktisch den code geliefert, du musst hier nur noch etwas copy&pasten Oo


Wie gesagt ich werde mich informieren und welche der beiden Lösungen mir besser liegt, die werde ich dann auch benutzen.
Unverständlich ist es nicht ganz, nur wie schon @[Only registered and activated users can see links. Click Here To Register...] sagte, die ganzen sind Begriffe verwirrend ^^. Desweiteren wollte ich nicht einfach Copy&Paste machen da mir das eher wenig bringt, ich lese mir alles immer komplett durch und versuche es zu verstehen und dann selbst zu machen. Die Codes die du mir da hingeschrieben hast, die sehe ich eher als Hilfe an die ich mich halten kann, wenn ich mal nicht weiterkomme :)
06/01/2017 23:04 rachefaust#10
Quote:
Originally Posted by 0x6a6b View Post
*Hust*File.ReadAllLines*Hust*File.WriteAllLines

Des weiteren wäre meine lösung die bessere, da Newtonsoft für dich die ganze Arbeit macht.
Außerdem sieht der code dann gleich viel schöner aus und man kann das ganze beliebig erweitern und man muss nicht irgendwie mit arrays rumfrickeln.

@TE: Was genau ist denn unverständlich an meiner lösung? Ich hab dir praktisch den code geliefert, du musst hier nur noch etwas copy&pasten Oo
ja genau also gut is das er sich ja schlau googlt weil bei c&p lernt man nix da is deine lösung definitiv nich gut also der weg mag hinhaun aber c&p ... würde als anfänger den weg von quadusch nehmen definitiv einfacher