Ich habe Probleme die Variable zu übergeben ...
-
du gehst das ganze i-wie völlig falsch an ^^ in den Click Eventhandler des Buttons kommt nur der Methodenaufruf und dann am besten ne Additionsmethode einfach also
void Addieren(int Zahl1, int Zahl2, out Ergebnis) { Ergebnis = Zahl1 + Zahl2; }
und dann aufrufen mit
int Ergebnis, Zahl1 = 5, Zahl2 = 2; Addieren(Zahl1, Zahl2, Ergebnis);
vllt. unterschätz ich grad auch einfach das Problem und versteh dich nich ^^ aber so würde es am meisten Sinn machen
-
Das Problem ist doch wohl, dass Du Dir zum Zeitpunkt des '+' den ersten Summanden merken musst, weil die Textbox für den zweiten Summanden freigemacht werden muss. Das machst Du am besten in einem Feld der Klasse. Da muss nix übergeben werden, jedenfalls nicht im Bereich des Eventhandlers.
-
Ok ich habe es mehr oder weniger geschafft... Die konvertierung der Datentypen ist etwas hässlich geschrieben, dürfte aber klappen.
Das positive meiner bisherigen Bemühen : Es gibt mir in der IDE keinen Fehler aus!
Der negative aspekt ist das ein Fehler während der Laufzeit auftritt... übrigens kam bei mir in der IDE manchmal die Warnung das AdditionFu nicht genutzt werde... da der Warnungscode im augenblick nicht kommt (obwohl ich nichts am code geändert habe) kann ich ihn nicht genau wieder geben.
Es ist relativ unsauber ... sorry es sollte erstmal ne art "schmierzettel" bzw "schmierprogramm" werden um überhaupt eine Funktion des Rechners auf die Reihe zu bekommen. Sorry für das anfängerliche gefrage...
Als aller erstes die Klasse stdOperatoren
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TaschenRechner { class stdOperatoren { public int Wert1; public int Wert2; public int calci() { int result; result = Wert1 + Wert2; return (result); } } }
Und hier die Form.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using TaschenRechner; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private stdOperatoren AdditionFu; private void Digit1(object sender, EventArgs e) { textBox1.Text += "1"; } private void Digit2(object sender, EventArgs e) { textBox1.Text += "2"; } private void Digit3(object sender, EventArgs e) { textBox1.Text += "3"; } private void Digit4(object sender, EventArgs e) { textBox1.Text += "4"; } private void Digit5(object sender, EventArgs e) { textBox1.Text += "5"; } private void Digit6(object sender, EventArgs e) { textBox1.Text += "6"; } private void Digit7(object sender, EventArgs e) { textBox1.Text += "7"; } private void Digit8(object sender, EventArgs e) { textBox1.Text += "8"; } private void Digit9(object sender, EventArgs e) { textBox1.Text += "9"; } private void Digit0(object sender, EventArgs e) { textBox1.Text += "0"; } public void Calculate(object sender, EventArgs e) { AdditionFu = new stdOperatoren(); object zwischen; zwischen = textBox1.Text; AdditionFu.Wert2 = Convert.ToInt32(zwischen); AdditionFu.calci(); int dada; dada = AdditionFu.calci(); MessageBox.Show(dada.ToString()); } public void addition(object sender, EventArgs e) { object zwischen2; zwischen2 = textBox1.Text; textBox1.Text = ""; AdditionFu.Wert1 = Convert.ToInt32(zwischen2); } } }
-
also erst mal hoffe ich dass du den button addition zuerst drückst
^^ zweitens, hat calci den rückgabewert vom typ int, du kannst es also nicht einfach so aufrufen:
AdditionFu.calci();
lösch die zeile mal, drittens initialisiere doch keine variablen die du eh nur einmal benutzt ^^ mach aus
object zwischen; zwischen = textBox1.Text; AdditionFu.Wert2 = Convert.ToInt32(zwischen);
AdditionFu.Wert2 = int.Parse(textBox1.Text);
#Das du noch kein Parameter benutzt is gewollt oder? weil das wäre wesentlich sinnvoller und einfacher, ausser du willst die extra noch nich benutzen
-
mh ich hab sie einfach nur nicht benutzt weil ich es nach dem motto "hauptsache es funktioniert" probiert habe, du darfst mir den teil mit den parametern gerne machen oder mir sagen was ich damit machen soll um es zu verbessern.
edit: Den teil mit dem
AdditionFu.Wert2 = int.Parse(textBox1.Text);
raffe ich ehrlich gesagt nicht... was ist dieses int.Parse? Da ich nicht genau weiss was es ist weiss ich auch nicht wo es hin soll ... sind parse heisst ja eigl durchkämmen => durchsucht die textbox nach int werten ???
edit2: übrigens mit deinen änderungen (int.parser teil noch nicht eingearbeitet) funktioniert das programm noch immer nicht^^. Wie gesagt der Fehler kommt erst nach dem man das programm gestartet hat...
-
int.Parse wandelt einfach nur in int um geht auch mit double... hm wenns immernoch nich klappt weiß ich es nicht vllt könntest du den genauen fehler posten
-
der fehler geschieht halt immer zur laufzeit ... du kannst den source ja mal starten und einfach 1+1 oder so rechnen ... dann wirst du sehen was ich meine, ich versuche den genauen fehlercode mal mit try und catch zu kriegen
EDIT : ok er gibt den Fehler "Input string was not in a correct format" das kann ich wsl alleine schaffen und setze mich da auch gleic ran
Anregungen dürfen trotzdem gerne gepostet werden
-
ähm ok ... was ist daran falsch ? Ich habe es nicht lösen können
allerdngs hatte ich auch nicht so viel zeit dafür...
Könnte mir jmd erklären was daran falsch ist und es korrigieren ?
-
public void addition(object sender, EventArgs e) { AdditionFu = new stdOperatoren(); AdditionFu.Wert1 = int.Parse(textBox1.Text); } public void Calculate(object sender, EventArgs e) { AdditionFu.Wert2 = int.Parse(textBox1.Text); MessageBox.Show(AdditionFu.calci().ToString()); }
also erst mal ist ein Fehler dass du additionfu erst bei calculate erstellst aber in addition schon zuweist und falls du wirklich diese Fehlermeldung mit falsches string format so bekommst ist i-was drum herum falsch (falsche eingabe etc.)
-
Ich kriege es einfach nicht hin, hier der bisher ganze code... WIESO gibt er mir den Fehler aus ? Ich verstehe es gaaaaarnicht!
Form.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using TaschenRechner; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private stdOperatoren AdditionFu; private void Digit1(object sender, EventArgs e) { textBox1.Text += "1"; } private void Digit2(object sender, EventArgs e) { textBox1.Text += "2"; } private void Digit3(object sender, EventArgs e) { textBox1.Text += "3"; } private void Digit4(object sender, EventArgs e) { textBox1.Text += "4"; } private void Digit5(object sender, EventArgs e) { textBox1.Text += "5"; } private void Digit6(object sender, EventArgs e) { textBox1.Text += "6"; } private void Digit7(object sender, EventArgs e) { textBox1.Text += "7"; } private void Digit8(object sender, EventArgs e) { textBox1.Text += "8"; } private void Digit9(object sender, EventArgs e) { textBox1.Text += "9"; } private void Digit0(object sender, EventArgs e) { textBox1.Text += "0"; } public void Calculate(object sender, EventArgs e) { AdditionFu = new stdOperatoren(); AdditionFu.Wert2 = int.Parse(textBox1.Text); MessageBox.Show(AdditionFu.calci().ToString()); } public void addition(object sender, EventArgs e) { try { textBox1.Text = ""; AdditionFu.Wert1 = int.Parse(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "Fehler"); } } } }
Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
stdOperatoren.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TaschenRechner { class stdOperatoren { public int Wert1; public int Wert2; public int calci() { int result; result = Wert1 + Wert2; return (result); } } }
-
ich hab dir doch schon geschrieben dass deine klasse noch nicht besteht in addition und du schon was zuweist, was nicht möglich ist und die methoden wie sie richtig wären hab ich auch schon gepostet
-
µBx schrieb:
WIESO gibt er mir den Fehler aus ?
Ich habe die Lösung.
Disclaimer: If you do not find any usefullness in this answer it might be caused by the question is the first place.
Aber um nicht ganz Arsch zu sein heute, hier ein Hinweis zusätzlich zu dem was Siraja schon gesagt hat:
try { textBox1.Text = ""; AdditionFu.Wert1 = int.Parse(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "Fehler"); }
Achte mal auf die Reihenfolge von löschen des Inhalts und Parsen des Inhalts...
-
oh ja das hab ich nicht beachtet, das spuckt natürlich nen string input fehler aus ^^
-
ok sorry loks
es funktioniert mittlerweile halbwegs... es gab noch den fehler "Object reference not set to an instance of an object" aber das lag auch an der falschen reihenfolge... naja nun gibt er mir in der messagebox aber auch nur die zuletzt eingegebene Zahl anstatt das Ergebnis der Addition aus... ich versuche mich weiterhin dran