TextBox auslesen -> Programm absturz
-
Hey,
ich hoffe ich bin hier richtig.
Ich habe mir ein kleinen Taschenrechner geschrieben,
aber immer wenn er eine brechnung mit Komma Stelle machen soll, kommt winw fehlermeldung.Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs "System.FormatException" ist in mscorlib.dll aufgetreten.Zusätzliche Informationen: Die Eingabezeichenfolge hat das falsche Format.
Höffendlich könnt ihr mir dabei helfen das Problehm zu lösen.
MfG. Soak77
-
Klar können wir helfen. Die Eingabezeichenfolge hat das falsche Format.
War doch ganz einfach.Da es hier keine Hellseher gibt, wäre etwas Code ganz nützlich.
-
Also das Schild erscheind, wenn ich sage das er aus einer textBox etwas auslesen soll.
Dabei ist es egal ob in der textBox eine Kommazahlsteht oder ob die textBox leer ist.Bin dabei mir eienen Taschenrechner zubauen.
Als ein beispiel.
textBox1 = Eingabe Feld
textBox2 = Ausgabe Feld
Button6 = x² Taste
Wenn man aufen Button klickt:double ausgabe; private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) { // Taste x² double x²; x² = Convert::ToInt32(textBox1->Text); ausgabe = x² * x²; textBox1->Text = Convert::ToString(ausgabe); textBox2->AppendText(Convert::ToString("\r\n" + x² + "² = " + ausgabe + "\r\n")); wert = 0; }
Ich bin der meinung das es bei diesem Schritt passiert:
x² = Convert::ToInt32(textBox1->Text);
Hoffe man da kennt einer eine Lösung für.
Und noch eine Farge meint ihr das ich das so richtig schreibe oder mache ich das zu kompliziert.
MfG. Soak77
-
Der Code sieht nach .NET Framework aus. ->Falsches Forum!
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
1. x² als Bezeichner ist wirklich nicht geeignet (ich weiss nicht ob es Möglich ist, anscheinend schon).
2. Du hast also eine Variable von Typ double und weist ein int zu (mit Convert::ToInt32(..) - warum ist die Variable nicht gleich int?
3. Convert.ToInt32(..) erwartet Text, der eine Ganzzahl darstellt. Ist das bei deiner TextBox so? Oder steht da etwa z.B. 1.0?
-
Nunja ich habe double genommen weil ich gelesen habe das double heute öfters genutzt wird als int.
Außerdem ist es egal ab ich int oder double ect. benutze.
Es kommt immer das Schild wenn ich den Wert aus der textBox auslesen will, sobald eine Kommerzahl drinne steht oder sie leer ist.
//Edit
Ich habe das Programm mal nicht aus Visual C++ sondern vom Desktop gestartet und habe eine Kommerzahl eingegeben. Jetzt bekamm ich diese Fehlermeldung:
Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.************** Ausnahmetext **************
System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
bei System.Convert.ToInt32(String value)
bei Rechner.Form1.button1_Click(Object sender, EventArgs e) in c:\users\USER\dropbox\programming\c++\projects\rechner\rechner\form1.h:Zeile 2854.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Geladene Assemblys **************
mscorlib
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.239 (RTMGDR.030319-2300).
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.
----------------------------------------
Rechner
Assembly-Version: 1.0.4351.24232.
Win32-Version: .
CodeBase: file:///C:/Users/USER/Dropbox/Programming/C++/Projects/Rechner/Debug/Rechner.exe.
----------------------------------------
System.Windows.Forms
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.235 built by: RTMGDR.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System.Drawing
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.236 built by: RTMGDR.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Configuration
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 (RTMRel.030319-0100).
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
----------------------------------------
System.Xml
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.233 built by: RTMGDR.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
mscorlib.resources
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.235 (RTMGDR.030319-2300).
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 4.0.0.0.
Win32-Version: 4.0.30319.1 built by: RTMRel.
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.Zum Beispiel:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.
-
Soak77 schrieb:
Es kommt immer das Schild wenn ich den Wert aus der textBox auslesen will, sobald eine Kommerzahl drinne steht oder sie leer ist.
Welch wunder, wenn du Convert.ToInt32 benutzt, um den Inhalt auszulesen. Wie wäre es, wenn du double.TryParse verwendest, um an die Zahl zu kommen?
-
Benutze
double d; if (Double::TryParse(textBox1->Text, d)) { // ... }
-
Th69 schrieb:
Benutze
double d; if (Double::TryParse(textBox1->Text, d)) { // ... }
Danke hat geklappt.
Und zwei Fragen habe ich noch:
1.
Ich habe vorher mit Visual C++ Programmiert und jetzt mit Visual Studio.
Jetzt zeigt er aber nicht mehr die normalen Sonderzeichen(wie das ² oder das Wurzel Zeichen) in der Form an sondern halt andere wie ein Ä z.B.
Kann man das irgendwo umstellen.Ich habe grade diesen beitrag gelesen:
Windows Forms und Visual C++ MACHT KEINEN SINN!Meine frage kann ich auch, wenn ich in MVS bei einen Neuen Projekt auf Form-Anwendungen klicken, das den so umstellen, das ich mit C/C++ und nicht mit C++/CLI programmiere?
-
Ich habe vorher mit Visual C++ Programmiert und jetzt mit Visual Studio.
Visual C++ ist Visual Studio - einfach nur der C++ Teil (d.h. ohne C#, VB.NET, etc.).
Meine frage kann ich auch, wenn ich in MVS bei einen Neuen Projekt auf Form-Anwendungen klicken, das den so umstellen, das ich mit C/C++ und nicht mit C++/CLI programmiere?
Ja. Aber es ist sehr viel einfacher, wenn Du einfach ein neues C++ Projekt anlegst (d.h. z.B. ein Win32 Console Application Projekt).
Oder steig auf C# um. Auch eine Möglichkeit.