"E2015 Mehrdeutigkeit ..." (war: Frage zu dieser Fehlermeldung)
-
[C++ Fehler] Unit1.cpp(36): E2015 Mehrdeutigkeit zwischen '_fastcall System::AnsiString::AnsiString(char)' und '_fastcall System::AnsiString::AnsiString(short)'
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; float Groesse; int Alter; char Name, Augenfarbe, Hobby, Monat, Land; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Edit1->Text = StrToInt (Edit1->Text); if (Edit1->Text == 17) Label7->Caption = "Richtig"; else Label7->Caption = "Falsch"; if (Edit2->Text == "Dunkelbraun") Label8->Caption = "Richtig"; else Label8->Caption = "Falsch"; Edit3->Text = StrToFloat (Edit3->Text); if (Edit3->Text == 1,70) Label9->Caption = "Richtig"; else Label9->Caption = "Falsch"; if (Edit4->Text == "März") Label10->Caption = "Richtig"; else Label10->Caption = "Falsch"; if (Edit5->Text == "Afghanistan") Label11->Caption = "Richtig"; else Label11->Caption = "Falsch"; if (Edit6->Text == "Webdesign") Label12->Caption = "Richtig"; else Label12->Caption = "Falsch"; ; } //---------------------------------------------------------------------------
Dann kommt bei dierser Zeile:
Edit3->Text = StrToFloat (Edit3->Text); if (Edit3->Text == 1,70) Label9->Caption = "Richtig";
Der Fehler. Wisst ihr warum ?
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Edit3->Text = StrToFloat (Edit3->Text);
Unabhängig von der Fehlermeldung ist der Code logisch falsch.
Zerlege das mal in die einzelnen Schritte:Ich habe einen String (Edit->Text).
Ich wandle den String in einen float um.
ich wandle den float in einen String um.
Ich habe wieder einen String.Kommt dir das nicht auch etwas seltsam vor?
-
ja schon, aber ich sag ja nirgends das er das von Float wieder zu String wandeln soll.
-
TEdit::Text ist vom Typ AnsiString, deshalb kann dort nie ein "echter" float (oder int) stehen. Bei der Zuweisung an Edit->Text wird die Umwandlung automatisch vorgenommen.
-
Also reicht schon
StrToFLoat (Edit3->Text); ?
-
"Reicht" ist relativ, schliesslich müsste das Ergebnis von StrToFloat ja noch igendwo gespeichert werden, eben in einem float.
In deinem Fall kannst du damit aber nichts anfangen, und deshalb auf das StrToFloat komplett verzichten.
Lass die Zahlen einfach als Strings stehen und vergleiche diese.if (Edit->Text == "1,7") ...
-
naja das Problem ist ja, das da 1,70 hin muss nicht 1,7.
Aber hab das Problem schon so gelösst.
Wie kann ich jetzt allen Eingaben eine Variable zu weisen ?