Entwickler-Ecke
Basistechnologien - Kurze Frage zu Datentypen
ThomAlex - Do 29.10.09 19:54
Titel: Kurze Frage zu Datentypen
Hallo
Ich möchte etwas einlesen und vermeiden, dass andere Datentypen eingelesen werden können
Ich weiß, dass da try und catch für sowas gut ist, wollte nur wissen, wie man prüft ob eine eingelesener Wert vom Typ int z.B ist
C#-Quelltext
1:
| int zahl = Convert.ToInt32(irgendeineTextbox.Text); |
es könnte ja sein, dass der User keine Zahl eingibt sondern nen Text und das würde zu einem Fehler führen, das will ich vermeiden, indem er den Fehler abfängt und stattdessen eine Fehlermeldung anzeigt:
C#-Quelltext
1:
| MessageBox.Show("Falsche Eingabe"); |
bin neuer Programmierer, deshalb erwartet nicht zuviel
Danke schonmal im vorraus
MFG Alex
Moderiert von
Christian S.: C#-Tags hinzugefügtModeriert von
Christian S.: Topic aus WinForms verschoben am Do 29.10.2009 um 19:42
JüTho - Do 29.10.09 19:58
Für diesen Versuch gibt es vor allem int.TryParse; die gleiche Methode gibt es auch für andere Zahlen oder DateTime. Diese Methoden haben auch Überladungen, mit denen länderspezifische Eigenheiten berücksichtigt werden.
Gruß Jürgen
ThomAlex - Do 29.10.09 21:24
Ah okay danke, aber iwie mach ich was falsch.
Könntest du dich auf meine oben genannte Problemstellung beziehen(vermeiden, dass in die Textbox keine anderen Datentypen, sondern nur int eingelesen werden können, und per messagebox der Fehler angezeigt wird, anstatt das Programm abschmiert) und dies coden=?
Wäre sehr dankbar für die Hilfe
MFG
Christian S. - Do 29.10.09 21:28
ThomAlex hat folgendes geschrieben : |
| Ah okay danke, aber iwie mach ich was falsch. |
Zeig doch mal, wie Du es versuchst. :-)
ThomAlex - Do 29.10.09 21:48
Ja ich weiß nicht mit der int.TryParse-Methode umzugehen, mir erschliesst sich nicht wie ich damit prüfen kann ob die Eingabe ein Int32 ist.
Pseudo:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| int zahl = Convert.ToInt32(txtbox.Text);
if (zahl ist kein Integer) { catch () { MessageBox.Show("Error"); } } |
so hier banal, das hier hab ich versucht
C#-Quelltext
1: 2:
| int zahl = Convert.ToInt32(txtLimitQuadrat.Text); Int32.TryParse(zahl, out int result) |
und dann zeigt er schon an, dass zahl nicht in nen String konvertiert werden kann, aber das will ich ja auch nicht ich will nur checken, ob zahl Kein Integer ist um nen Absturz zu vermeiden. Vielleicht eignet sich diese Methode dafür ja nicht, und wenn doch verstehe ich die Syntax nicht.
Moderiert von
Christian S.: C#-Tags hinzugefügt
Christian S. - Do 29.10.09 21:53
Hallo!
Die TryParse-Methode ersetzt in Deinem Quelltext die Convert.ToInt32-Methode vollständig. Die brauchst Du dann nicht mehr.
TryParse versucht, den im ersten Parameter enthaltenen String in eine Zahl zu konvertieren. Gelingt das, steht das Ergebnis im zweiten Parameter und der Rückgabewert der Methode ist true. Gelingt das nicht, ist der Rückgabewert der Methode false.
Grüße
Christian
Christoph1972 - Do 29.10.09 22:07
Hi,
so kann man das machen:
C#-Quelltext
1: 2: 3:
| Int32 zahl = 0; Int32 intvar = 0; if (Int32.TryParse(textBox1.Text, out intvar)){ zahl = intvar;} |
ThomAlex - Do 29.10.09 22:14
Es klappt jetzt:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| int zahl = 0; int intvar = 0; if (!Int32.TryParse(txtLimitQuadrat.Text, out intvar)) { MessageBox.Show("Fehler"); } |
Danke für die Hilfe MFG > Alex
Moderiert von
Christian S.: C#-Tags hinzugefügt
Christoph1972 - Do 29.10.09 23:10
Hi, benutz doch bitte mal die Bereiche für Code!
So ist das doch viel schöner:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| int zahl = 0; int intvar = 0; if (!Int32.TryParse(txtLimitQuadrat.Text, out intvar)) { MessageBox.Show("Fehler"); } |
ODER?
Christian S. - Do 29.10.09 23:18
Ich find's auf jeden Fall schön, dass ihr die unnötige Variable "zahl" immer mit copy-und-pasted. Da weiß ich doch, warum ich so ungerne fertige Quelltexte liefere :zwinker:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!