Hi Leute,
ihr ahnt es bestimmt schon: Ich bin blutiger Anfänger und habe eine Frage:
Ich mach sowas ähnliches wie ein Taschenrechner, unter anderem werden an einer Stelle mehrere Zahlen addiert. Wenn ich nicht alle zur Verfügung gestellten Felder (man kann höchstens 15 Zahlen addieren) ausfülle bricht das Programm ab.
Wie kann ich einstellen, dass das Programm ein nicht ausgefülltes Feld als Null ansieht?
Habe das so gemacht:
Double ergebnis = 0;
ergebnis = Convert.ToDouble(tb_sp_1.Text) + Convert.ToDouble(tb_sp_2.Text) + Convert.ToDouble(tb_sp_3.Text);
...das Ganze geht halt bis tb_sp_15
Gruß Paul
Prüf doch mit einer If-Anweisung ob die Textbox nicht leer ist:
double Ergebnis = 0;
if (txbZahl1.Text != null)
{
Ergebnis += Convert.ToDouble(txbZahl1.Text);
}
if (txbZahl2.Text != null)
{
Ergebnis += Convert.ToDouble(txbZahl2.Text);
}
MessageBox.Show(Ergebnis.ToString());
LG Karim
Hm, nein funzt nicht.
"Die Eingabezeichenfolge hat das falsche Format."
meldet er, wenn ich das Programm ausführe und nicht alle 15 Felder mit Zahlen fülle.
Hallo P584,
herzlich willkommen hier auf myCSharp.de!
Eine Alternative wäre, statt Textboxen _NumericUpDown_s zu verwenden. Dann hättest du schon mal ein paar Probleme weniger.
Statt des "txbZahl1.Text != null" solltest du besser "!String.IsNullOrEmpty(txbZahl1.Text)" schreiben - dann zählen auch leere Strings - null
ist der Text einer TextBox IMHO eher selten.
Außerdem solltest du lieber Double.TryParse statt Convert.ToDouble verwenden - dann kannst du den Code sogar wie folgt umschreiben:
double zahl;
if (Double.TryParse(txbZahl1.Text, out zahl))
ergebnis += zahl;
Allerdings wird dann auch z.B. "abc123" als 0 erkannt.
Hallo Tarion,
es wird zwar nur ganz selten vorkommen dass ein string NULL ist aber es kann vorkommen.
siehe
string abc = null;
bool c = abc.Length > 0;
Hier würde es krachen weil du nicht auf Length zugreifen kannst wenn der String null ist
Deshalb würde ich den Vorschlag von winSharp93 empfehlen
Gruss
Michael
Hallo michlG,
Hier würde es krachen weil du nicht auf Length zugreifen kannst wenn der String null ist
im Allgemeinen hast du recht. Da muss man berücksichtigen, dass ein String auch null sein kann. Bei den Standard-Controls - um die es hier ja geht - und bei gut programmierten eigenen Controls wird als Text nie null zurückgegeben.
Deshalb würde ich den Vorschlag von winSharp93 empfehlen
Wie man einen String am besten auf leer testet wurde ausführlich in myString == "" oder string.Length == 0. Es gibt da keine klar beste Lösung, sondern unterschiedliche Ansichten drüber.
herbivore
Hallo,
danke für die vielen Antworten!
Das ganze klappt jetzt prima mit
!String.IsNullOrEmpty(txbZahl1.Text)
also dem Vorschlag von winSharp93.
Gruß Paul
Ich mache das so (quick & dirty) :
Double.TryParse("0" + txbZahl1.Text, out zahl);
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3