Nadine19 Geschrieben 22. Oktober 2009 Teilen Geschrieben 22. Oktober 2009 Hallo, bin neu hier ^^! Ich heiße Nadine und befinde mich zur Zeit im 1.Ausbildungsjahr zur Fachinformatikerin. Ich bin noch blutige Anfängerin in C#, da ich vorher nur mit Visual Basic programmiert habe. Ich sollte einen Taschenrechner programmieren, was ich auch soweit hin bekommen habe. Nun soll ich die Rechenoperation in eine Textdatei schreiben, sprich: 12 - 3 = 9 9 + 2 = 11 11 * 5 = 55 55 / 10 = 5,5 usw. Ich habe die Variablen wert1, wert2 und ergebnis. Wie schreibe ich sie in eine Textdatei? Ich freue mich sehr über eure Antworten :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
El Ninjo Geschrieben 22. Oktober 2009 Teilen Geschrieben 22. Oktober 2009 Hi, schau die mal diese Klassen an: FileStream-Klasse (System.IO) StreamWriter-Klasse (System.IO) Dort findest du auch Beispiele zu den Klassen. LG Flo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nadine19 Geschrieben 23. Oktober 2009 Autor Teilen Geschrieben 23. Oktober 2009 Danke für deine Antwort, aber ich werde leider nicht draus schlau ^^" Ich hab noch nicht mit Klassen gearbeitet. Hier mein Code, falls es dann verständlicher ist: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } double wert1 = 0; double wert2 = 0; double ergebnis = 0; double zahl1 = 1; double zahl2 = 2; double zahl3 = 3; double zahl4 = 4; double zahl5 = 5; double zahl6 = 6; double zahl7 = 7; double zahl8 = 8; double zahl9 = 9; double zahl0 = 0; bool plus = false; bool minus = false; bool mal = false; bool geteilt = false; bool geklickt = false; bool komma = false; private void button14_Click(object sender, EventArgs e) { if (geklickt) { textBox1.Text = ""; geklickt = false; } if (textBox1.Text.StartsWith("0")) { textBox1.Text = "0"; } else { textBox1.Text += zahl0.ToString(); } } private void button5_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl1.ToString(); } private void button6_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl2.ToString(); } private void button7_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl3.ToString(); } private void button8_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl4.ToString(); } private void button9_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl5.ToString(); } private void button10_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl6.ToString(); } private void button11_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl7.ToString(); } private void button12_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl8.ToString(); } private void button13_Click(object sender, EventArgs e) { if (textBox1.Text == "0") { textBox1.Text = ""; } if (geklickt) { textBox1.Text = ""; geklickt = false; } textBox1.Text += zahl9.ToString(); } private void button16_Click(object sender, EventArgs e) { textBox1.Text = ""; } private void plusButton_Click(object sender, EventArgs e) { if (textBox1.Text == "") { textBox1.Text = "0"; } else { this.wert1 = Convert.ToDouble(textBox1.Text); geklickt = true; plus = true; minus = false; mal = false; geteilt = false; } } private void button2_Click(object sender, EventArgs e) { if (textBox1.Text == "") { textBox1.Text = "0"; } else { this.wert1 = Convert.ToDouble(textBox1.Text); geklickt = true; minus = true; plus = false; mal = false; geteilt = false; } } private void button3_Click(object sender, EventArgs e) { if (textBox1.Text == "") { textBox1.Text = "0"; } else { this.wert1 = Convert.ToDouble(textBox1.Text); geklickt = true; mal = true; plus = false; minus = false; geteilt = false; } } private void button4_Click(object sender, EventArgs e) { if (textBox1.Text == "") { textBox1.Text = "0"; } else { this.wert1 = Convert.ToDouble(textBox1.Text); geklickt = true; geteilt = true; plus = false; minus = false; mal = false; } } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Contains(",")) { komma = false; } else { komma = true; textBox1.Text += ","; } } private void button15_Click(object sender, EventArgs e) { if (textBox1.Text.IndexOf("-") >= 0) { textBox1.Text = textBox1.Text.Remove(0, 1); } else { textBox1.Text = "-" + textBox1.Text; } } private void gleichButton_Click(object sender, EventArgs e) { if (textBox1.Text == "") { textBox1.Text = "0"; } if (wert1 == 0) { ergebnis = Convert.ToDouble(textBox1.Text); } wert2 = Convert.ToDouble(textBox1.Text); if (wert1<0 & wert2 <0) { ergebnis = wert1 + wert2; geklickt = false; plus = false; minus = false; mal = false; geteilt = false; } if (wert2 <0 & wert1 >0) { ergebnis = wert1 - wert2; geklickt = false; plus = false; minus = false; mal = false; geteilt = false; } if (plus == true) { ergebnis = (wert1) + (wert2); } if (minus == true) { ergebnis = (wert1) - (wert2); } if (mal == true) { ergebnis = (wert1) * (wert2); } if (geteilt == true) { if (wert2 == 0) { textBox1.Text = "ERROR"; } else { if (wert1 == wert2) { ergebnis = 1 / wert1; textBox1.Text = ergebnis.ToString(); } else { ergebnis = (wert1) / (wert2); textBox1.Text = ergebnis.ToString(); } } } else { textBox1.Text = ergebnis.ToString(); } wert2 = 0; wert1 = 0; ergebnis = 0; plus = false; minus = false; mal = false; geteilt = false; } private void button17_Click(object sender, EventArgs e) { } } } Ich möchte das Schreiben in eine Textdatei durch einen Button Klick auslösen. Es soll jedesmal die einegebene Rechnung (z.B. 9 + 2 = 11) in eine neue Zeile geschrieben werden. Vielleicht so: StreamWriter MyStreamWriter = new StreamWriter(@"C:\Dokumente und Einstellungen\nm\Eigene Dateien\Taschenrechner\taschenrechner.txt"); MyStreamWriter.Write(wert1.ToString() + wert2.ToString()) = ergebnis.ToString(); ??? Wie bekomme ich es hin, das wenn ich auf + klicke auch plus zwischen wert1 und wert2 steht und wenn da - steht, eben -? Vielleicht mit meiner Variablen "geklickt" die alle Operatoren beinhaltet? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
El Ninjo Geschrieben 23. Oktober 2009 Teilen Geschrieben 23. Oktober 2009 Hi, Ich hab noch nicht mit Klassen gearbeitet. Doch, wenn auch unbewusst... double zahl1 = 1; double zahl2 = 2; double zahl3 = 3; double zahl4 = 4; double zahl5 = 5; double zahl6 = 6; double zahl7 = 7; double zahl8 = 8; double zahl9 = 9; double zahl0 = 0; Brauchst du diese wirklich? Wenn ja, pack das in ein double-Array, das ist einfacher. Vielleicht mit meiner Variablen "geklickt" die alle Operatoren beinhaltet? Nein, das ist doch eine bool-Variable. StreamWriter MyStreamWriter = new StreamWriter(@"C:\Dokumente und Einstellungen\nm\Eigene Dateien\Taschenrechner\taschenrechner.txt"); MyStreamWriter.Write(wert1.ToString() + wert2.ToString()) = ergebnis.ToString(); Das sieht doch schon ganz brauchbar aus:beagolisc Alles was du brauchst steht doch in der Textbox (textbox1) drin, einfach deren Text in die Datei schreiben, und danach MyStreamWriter schließen. So sollte es gehen: StreamWriter writer = null; if (!File.Exists("hier kommt der filename hin")) { writer = new StreamWriter(File.Create("filename")); } else { writer = new StreamWriter(File.Open("filename",FileMode.Append, FileAccess.Write)); } writer.WriteLine(textbox1.Text); writer.Close(); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nadine19 Geschrieben 23. Oktober 2009 Autor Teilen Geschrieben 23. Oktober 2009 Super, danke es funktioniert ^^! Aber in der Textdatei steht nur das Ergebnis. Ich möchte ja gerne, das da z.B. 12 - 3 = 9 steht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nadine19 Geschrieben 23. Oktober 2009 Autor Teilen Geschrieben 23. Oktober 2009 Hat sich erledigt, hab es selber hinbekommen ^^!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
0815FIA Geschrieben 23. Oktober 2009 Teilen Geschrieben 23. Oktober 2009 Ja ist ja auch logisch, Du schreibst mit deinem Writer ja auch nur TextBox1.Text in die Datei. writer.WriteLine(String.Format("{0} {1} {2} = {3}", wert1.ToString(), operator, wert2.ToString(), ergebnis.ToString()); operator müßtest du natürlich noch füllen, je nach Rechenoperation. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 23. Oktober 2009 Teilen Geschrieben 23. Oktober 2009 So sollte es gehen: StreamWriter writer = null; if (!File.Exists("hier kommt der filename hin")) { writer = new StreamWriter(File.Create("filename")); } else { writer = new StreamWriter(File.Open("filename",FileMode.Append, FileAccess.Write)); } writer.WriteLine(textbox1.Text); writer.Close(); Igitt, dann doch lieber diesen Konstruktor benutzen, da muss man nicht abfragen, ob die Datei bereits existiert. (Programmierer, schreibfaul und so. :floet:) (Außerdem gibts ja noch FileMode.OpenOrCreate) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nadine19 Geschrieben 29. Oktober 2009 Autor Teilen Geschrieben 29. Oktober 2009 Ich bins nochmal. Also wie gesagt läuft alles soweit. Jetzt soll ich meine Aufgabe erweitern. Es soll nicht nur 9 + 2 = 11 in die Textdatei geschrieben werden, sondern z.B.: 6 + 2 - 3 + 4 * 5 / 3 = 15 Die Variablen wert1 und wert2 merken sich ja immer nur die zuletzt eingebenen Zahlen und ob + - * oder / geklickt wurde. Wie kann ich das am besten anstellen? Hier nochmal der Code: StreamWriter writer = null; if (!File.Exists(Path.Combine(Application.StartupPath, "taschenrechner.txt"))) { writer = new StreamWriter(File.Create(Path.Combine(Application.StartupPath, "taschenrechner.txt"))); } else { writer = new StreamWriter(File.Open("taschenrechner.txt", FileMode.Append, FileAccess.Write)); } string log = Convert.ToString(wert1); if (plus == true) { log = log + " + "; } if (minus == true) { log = log + " - "; } if (mal == true) { log = log + " * "; } if (geteilt == true) { log = log + " / "; } log = log + Convert.ToString(wert2) + " = " + textBox1.Text; writer.WriteLine(log); writer.Close(); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 29. Oktober 2009 Teilen Geschrieben 29. Oktober 2009 Wie kann ich das am besten anstellen? Mehr in Klassen denken. Bsp: public interface ICalculationTerm { double Value1; double Value2; char Operator; double Result; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nadine19 Geschrieben 29. Oktober 2009 Autor Teilen Geschrieben 29. Oktober 2009 Tut mir leid, ich habe noch nicht mit Klassen gearbeitet :-( Wie gesagt ich bin totale Anfängerin. Wo genau soll der Code hin und wozu dient er genau? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 29. Oktober 2009 Teilen Geschrieben 29. Oktober 2009 (bearbeitet) Das ist eigentlich nur ein Interface für Klassen. D.h. alle Klasse, die dieses Interface implementieren, müssen diese Properties zur Verfügung stellen. Sinn der Klasse ist ganz einfach; als Beispiel nehm ich mal die von dir vorgegebene Gleichung: 6 + 2 - 3 + 4 * 5 / 3 = 15 Diese verlegt man in Teilstücke, d.h.: ICalculationTerm1(6, 2,+)ICalculationTerm2(ICalculationTerm1.Result, 3,-)ICalculationTerm3(4, 5,*)ICalculationTerm4(ICalculationTerm3.Result, 3,/)ICalculationTerm5(ICalculationTerm2.Result, ICalculationTerm4.Result,+) Ergo: ICalculationTerm5.Result == 33.333333333 Bearbeitet 29. Oktober 2009 von TDM Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.