Autor Beitrag
Ingo308
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 08.09.13 18:20 
erstmal hallo an alle und schonmal Danke im vorraus für jegliche hilfe. erstmal zu mir ich mache momentan eine vollzeitschulische ausbildung zum ITA und arbeite seid Freitag mit Windows Forms. meine ersten ansätze an sich klappen auch. so wir sollten ein Taschenrechner basteln der alles normale kann und schließlich zusätzlich eine weitere TextBox wo mann dann eine Dezimal in Binär, Oktal, und Hexadezimal umrechnet soweit sogut klappt alles. Jetzt soll ich allerdings das Programm erweitern, so dass es die umgerechneten Zahlen auch wieder zurück in Dezimal umrechnen kann und da komm ich gerade irgendwie nicht weiter. hier mal ebend mein Code:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                textBox3.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox2.Text));
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                textBox3.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) / Convert.ToDouble(textBox2.Text));
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox4_TextChanged(object sender, EventArgs e)
        {

        }

        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                textBox4.Text = textBox3.Text;
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            try
            {
                textBox3.Text = Convert.ToString(Convert.ToDouble(textBox3.Text) + Convert.ToDouble(textBox4.Text));
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            textBox4.Text = "";
        }

        private void button8_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                textBox3.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) * Convert.ToDouble(textBox2.Text));
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                textBox3.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) - Convert.ToDouble(textBox2.Text));
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void button4_Click_1(object sender, EventArgs e)
        {
            try
            {
                if (radioButton1.Checked == true) //Binär
                {
                    int gg = Convert.ToInt32(textBox5.Text);
                    textBox5.Text = Convert.ToString(gg, 2);
                }
                if (radioButton2.Checked == true) //Oktal
                {
                    int gg = Convert.ToInt32(textBox5.Text);
                    textBox5.Text = Convert.ToString(gg, 8);
                }
                if (radioButton3.Checked == true) //Hexadezimal
                {
                    int gg = Convert.ToInt32(textBox5.Text);
                    textBox5.Text = Convert.ToString(gg, 16);
                }
                if (radioButton4.Checked == true) //Dezimal
                {
                    int gg = Convert.ToInt32(textBox5.Text);
                    textBox5.Text = Convert.ToString(gg, 10);
                }
            }
            catch (Exception xyausnahme)
            {
                MessageBox.Show("Fehler" + xyausnahme);
            }
        }

        private void textBox5_TextChanged(object sender, EventArgs e)
        {

        }

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {

        }
    }
}



wer mir sagen kann was ich bei zeile 159-163 Falsch gemacht habe dem bin ich sehr sehr dankbar.
das war nämlich mein versuch wieder in Dezimal zurückzurechnen.

Mit Freundlichen grüßen
Ingo
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 08.09.13 19:16 
Wenn ich das richtig verstanden habe, willst du von einer z.B. Binären Zahl wieder zurück in eine Dezimalzahl.
Du hast mit Convert.ToString(gg, 2) nicht die Zahl geändert sondern den String. Sagen wir dein eingegebener Binärcode ist 10010100. Nach deinem Code Convert.ToInt32(gg) wird gg den Wert 10010100 als Dezimalzahl annehmen und nicht als Binärzahl. D.h. der Wert ist nun 10010100 und nicht 148. Und jetzt tust du mit Convert.ToString(gg, 2) diese Zahl in binärer Form ausgeben => 10010100 dezimal => 1001 1000 1011 1101 1111 0100 binär

Probier's mal so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
 if (radioButton1.Checked == true//Binär
                {
                    int gg = Convert.ToInt32(textBox5.Text, 2);
                    textBox5.Text = gg.ToString();
                }

Die 2 ist dann wieder die Basis.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: Ingo308
Ingo308 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 08.09.13 21:56 
Danke für deine Super Hilfe aber eine Frage habe ich trotzdem noch das Problem ist soweit super gelöst allerdings Versteh ich noch nicht ganz was mein Fehler war und da ich ja auch daraus lernen möchte und nicht nur einfach fertiges nehmen möchte wäre ich dir dankbar wenn du das nochmal versucht ein wenig genauer zu erklären.

MFG

Ingo
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 09.09.13 09:44 
Hallo Ingo,

m.E. hast du einen generellen Denkfehler bei deinem Code. Bisher speicherst du immer die String-Repräsentation direkt in der TextBox, weißt aber bei der Konvertierung gar nicht, in welchem Format (binär, oktal, hex oder decimal) der Text vorliegt!
Besser ist es du speicherst die eigentliche Zahl in einer int (oder long) Variablen (als Klassenmember). Die Zahl selbst hat nämlich keine String-Repräsentation und daher kannst du dann die Ausgabe beliebig vornehmen.
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Di 10.09.13 14:22 
Also erstmal Th69 hat natürlich recht, du solltest die Zahl eher zwischenspeichern in einer Variable.

Nochmal zum Verständnis: Du hast deine Textbox in der sich jetzt sagen wir eine Binärzahl befindet "10011100" (dezimal: 156).
Nach deiner Methode hast du jetzt aber die Binärzahl als Dezimalzahl eingelesen, mit Convert.ToInt32(gg)! Dabei hast du aber nicht die Basis der Zahl angegeben und somit wird der Standard 10 genommen. D.h. du hast in deiner Variable gg jetzt den Wert 10011100 und NICHT 156. Wenn du 156 als Wert nehmen willst, musst du beim Konvertieren die Basis der Zahl in der TextBox angeben. Dadurch muss man aus Convert.ToInt32(gg), was gleichbedeutend mit Convert.ToInt32(gg, 10// Die 10 ist die Basis (dezimal), Convert.ToInt32(gg, 2) machen damit der Konverter auch weis, dass es sich hier um eine Binärzahl handelt und eben nicht um eine Dezimalzahl.

Ich hoffe es ist jetzt klar.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler