Welchen Fehler hbe ich gemacht? Bitte helfen :(
-
Hallo kann mir einer sagen was ich hier falsch gemacht habe? Es kommt die Fehlermeldung "[C++ Fehler] Unit1.cpp(24): E2034 Konvertierung von 'char' nach 'char *' nicht möglich"
if(Edit1->Text[x] == "+") { ... }Danke
-
if(Edit1->Text[x] == '+') { ... }
-
Ich glaube ich erweitere mal weil ich gar nicht mehr durchblicke:
void __fastcall TForm1::Button1Click(TObject *Sender) { for(int x; x < Edit1->Text.Length(); x++) { if(Edit1->Text[x] == '+') { Mitte = Edit1->Text[x]; Zahl1 = StrToInt(Edit1->Text.SubString(1,x-1)); Zahl2 = StrToInt(Edit1->Text.SubString(x+1,Edit1->Text.Length())); Label1->Caption = Zahl1+Zahl2; } } }Wie man sieht versuche ich selber einen Taschenrechner zu programmieren
Ist nur ein Test....Aber am Ende wird das Ergebnis nicht auf Label1->Caption angezeigt. Und ich finde den Fehler nicht Bitte Hilfe ^^ danke
-
x ist nicht initialisiert -> Programm neigt zu undefiniertem Verhalten...
-
Falls du es nicht selbst weisst:
for (int x = 0 ......)
-
Besser
for (int x = 1 ......)da bei AnsiString der Index bei 1 beginnt.
-
Und das ist dann auch falsch. Wenn überhaupt, dann x = 1. Edit1->Text ist vmo Typ AnsiString und die Daten beginnen nicht bei 0, sondern bei 1.
Mittes AnsiString::AnsiPos wäre das sowieso eleganter zu lösen. Und eine Überprüfung, ob da überhaupt Zahlen eingeben wurden wäre auch nicht schlecht.[Edit] Och nö, da ist akari schon mal nicht da - und dann tippselt Braunstein schneller...

-
Vielen Dank!
-
also wenn du das erste zeichen aus dem edit-feld edit1 haben möchtest
kannst du c_str() oder substring funktion benutzen
Edit1->Text.c_str(); Edit1->Text.SubString(1,1);
-
Kannst du mir verraten, was das jetzt soll.
Edit1->Text[1] funktioniert schon, wobei es hier besser wäre den Text erst auf eine temporäre AnsiString-Variable zwischenzuspeichern und darauf zu arbeiten.
c_str() liefert mit const char* einen Pointer auf den internen Datenpuffer (Nullterminiert) und nicht das erste Zeichen.
SubString(1,1) liefert zwar das erste Zeichen, aber als AnsiString und nicht als char.