Autor Beitrag
Izze
Hält's aus hier
Beiträge: 12

Vista

BeitragVerfasst: Fr 06.02.09 12:11 
Hallo,

erstmal, ich bin ganz neu hier und habe direkt eine Frage.

Ich bin blutiger Anfänger und im Moment irgendwie betriebsblind.
Habe auch beim Suchen nichts gefunden und in meinen Büchern verstehe ich es nicht ganz.

Zur Zeit bastele ich an einem Weight Watchers Punkterechner für meine Frau.
Soweit so gut. Es gelingt mir aber nicht die Zahlenwerte aus den Textboxen zu übernehmen und berechnen zu lassen.

Folgender Code liegt zugrunde:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
        private void buttonBerechnen100G_Click(object sender, EventArgs e)
        {
            //Textboxen 100 auslesen
            string Kcal100 = textBoxKcal100.Text;
            string Fett100 = textBoxFett100.Text;
            string Portionsgroesse100 = textBoxPortionsgroesse100.Text;

            //Textboxinhalt in Zahlen umwandeln
            int a,c;            
            double b;

            a = Convert.ToInt32(Kcal100);               //Ganzzahl
            b = Convert.ToDouble(Fett100);              //Kommazahl
            c = Convert.ToInt32(Portionsgroesse100);    //Ganzzahl

            //Punkte berechnen und Ergebnis ausgeben ::: Formel für Points = Fett*0,11 + kcal*0,0165
            textBoxPunkte100.Text = ((b * 0.11) + (a * 0.0165)) * c;            
        }


Und die Fehlermeldung dazu ist: Eine implizite Konvertierung vom Typ "double" in "string" ist nicht möglich.

Ich vermute, es hat wohl etwas damit zu tun das ich den Inhalt der Textbox in Zahlenwerte konvertieren muss.
Aber daran scheitert es wohl, sorry.

Danke schonmal für die Hilfe!


Zuletzt bearbeitet von Izze am Fr 06.02.09 13:13, insgesamt 1-mal bearbeitet
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 06.02.09 12:17 
Die Fehlermeldung sagt doch eigentlich alles:
dein double-wert (((b * 0.11) + (a * 0.0165)) * c) kann nicht implizit in string gewandelt werden also musst du das ganze explizit machen:
.ToString()
Izze Threadstarter
Hält's aus hier
Beiträge: 12

Vista

BeitragVerfasst: Fr 06.02.09 12:26 
Danke für die flotte Antwort.

ausblenden C#-Quelltext
1:
textBoxPunkte100.Text = (((b * 0.11) + (a * 0.0165)) * c).ToString();					


Scheint geklappt zu haben.
Fehlt nur die Kommasetzung.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Fr 06.02.09 13:01 
user profile iconIzze hat folgendes geschrieben Zum zitierten Posting springen:
Fehlt nur die Kommasetzung.

Für diese und viele weitere Fragen gibt es die ausführliche SDK-Doku/MSDN mit vielen Hinweisen und Beispielen. Bei Double.ToString gibt es vier Varianten (Überladungen), davon drei mit Vorgabe des Formats.

Übrigens sind die Convert-Methoden oft nicht so günstig (ich sage sogar "meistens", aber das ist Ansichtssache). Was passiert, wenn zwei Kommata oder ein Buchstabe eingegeben werden? Benutze lieber Parse, ParseExact oder noch besser TryParse, TryParseExact - Erläuterungen auch dazu siehe SDK-Doku/MSDN. Alternativ kannst Du auch MaskedTextBox oder NumericUpDown verwenden.

Gruß Jürgen

PS. Beschränke künftig Deinen Code-Auszug bitte auf die relevanten Teile. Die ganzen leeren EventHandler, die für Deine künftige Planung vorbereitet sind, sind für das aktuelle Problem überflüssig. Danke!


Zuletzt bearbeitet von JüTho am Fr 06.02.09 13:17, insgesamt 1-mal bearbeitet
Izze Threadstarter
Hält's aus hier
Beiträge: 12

Vista

BeitragVerfasst: Fr 06.02.09 13:14 
Danke für die Hinweise!

Ich habs oben auch geändert. ;-)