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 user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian 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

user profile iconThomAlex hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconChristian 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 user profile iconChristian 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: