| Autor |
Beitrag |
ThomAlex
      
Beiträge: 58
Windows 7
C# (VS08) Games via XNA (privat) oder WinForms (Schule)
|
Verfasst: Do 29.10.09 19:54
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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 58
Windows 7
C# (VS08) Games via XNA (privat) oder WinForms (Schule)
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 29.10.09 21:28
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ThomAlex 
      
Beiträge: 58
Windows 7
C# (VS08) Games via XNA (privat) oder WinForms (Schule)
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Christoph1972
      
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: 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;} |
_________________ Gruß
Christoph
|
|
ThomAlex 
      
Beiträge: 58
Windows 7
C# (VS08) Games via XNA (privat) oder WinForms (Schule)
|
Verfasst: 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
      
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: 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?
_________________ Gruß
Christoph
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|