Ausgabe immer 0
-
Moin!
Da wir gerade in der Schule mit dem Borland C++ Builder ein bisschen C++ lernen, habe ich mir diesen auch für zuhause zugelegt (in der Schule Version 5, zuhause Version 6).
Ich wollte jetzt erstmal nur ein Programm schreiben, dass den Wert zweier Variablen vertauscht und diese dann auf Knopfdruck im jeweils anderen Edit-Feld ausgegeben werden.
Aus irgendeinem Grund gibt er dann aber in beiden Edit-Feldern immer nur 0 (Null) aus.
Hier der Quelltext für den Button, der das tauschen auslösen soll:
Edit1 -> Text = StrToInt(Zahl1);
Edit2 -> Text = StrToInt(Zahl2);int tmp=Zahl1;
Zahl1=Zahl2;
Zahl2=tmp;Edit1 -> Text = IntToStr(Zahl1);
Edit2 -> Text = IntToStr(Zahl2);Wenn ich die Variablen in float deklariere und StrToFloat und FloatToStr benutze, scheint er diese Befehle nicht einmal zu kennen. Dann erscheint immer folgende Fehlermeldung:
[C++ Error] U_zdreher.cpp(34): E2015 Ambiguity between '_fastcall System::AnsiString::AnsiString(char)' and '_fastcall System::AnsiString::AnsiString(short)'
Ich hoffe mal ihr könnt mir vielleicht ein paar Tipps geben, wie ich das Programm richtig zum laufen bekomme.
P.S. Übrigens scheint der Borland C++ Builder allgemein bei mir nicht mit Zahlen umgehen zu können. Ich habe auch mal ein ganz einfaches Programm geschrieben, dass nur zwei Zahlen addieren soll und das Ergebnis in ein extra Feld geschrieben wird. Beim betätigen des Buttons werden wieder alle Zahlen zu einer Null.
-
StrToInt() macht AUS einem String eine ZAHL - da solltest Du keine Zahl reingeben!
mach mal in ButtonClick:
. . . int ZahlTemp; ZahlTemp=Edit1->Text.ToInt(); Edit1->Text=Edit2->Text; Edit2->Text=ZahlTemp; . . .
-
Ah, danke Altenburger!!
So funkioniert es jetzt.
Was mich nur stutzig macht ist, dass es in der Schule auch auf die Weise funktioniert, wie ich sie oben hingeschrieben habe.
Hat es vielleicht was damit zu tun, dass ich jetzt BCB6 habe und in der Schule nur BCB5? Wenn ja, könnte man BCB6 dazu bringen, wie BCB5 zu arbeiten? Will das ja schon so lernen, wie ich es in der Schule lerne.
-
Hi ...
ich habe auch den BCB 6 und dein Code läuft bei mir.
Allerdings versteh ich nich warum du erst immer StrToInt machst.
Der Inhalt der Textfelder is vom Typ AnsiString ... und der wandelt die übergebenen Werte automatisch wenns geht in AnsiString um.int Zahl1 = 1; int Zahl2 = 2; Zahl1 = Edit1 -> Text.ToInt(); Zahl2 = Edit2 -> Text.ToInt(); //Edit1 -> Text = StrToInt(Zahl1); //Edit2 -> Text = StrToInt(Zahl2); int tmp = Zahl1; Zahl1 = Zahl2; Zahl2 = tmp; Edit1 -> Text = IntToStr(Zahl1); Edit2 -> Text = IntToStr(Zahl2);mfg Blade