Kleines Problem beim Unterprogramm
-
Hallo, ich zeig euch was ich machen möchte:
habe dieses Unterprogramm geschrieben:
int AB; void TForm1::Fisch(char* Art, int Wert1, int Wert2) { if (TComboBox1->Text == Art) { if(Bild1->Visible==true){AB=Wert1;} if(Bild2->Visible==true){AB=Wert2;} } }Ich möchte das Unterprogramm so ausgeben:
Fisch("Forelle",2,3);Aber er kommt nicht einmal in die obere if Bedingung von TComboBox, da irgendetwas mit dem char "Art" nicht stimmt.
Ist wahrscheinlich ein simpler Fehler, aber ich komm einfach nicht drauf...Ich danke für eure Hilfe !
-
Hallo
AnsiString == char*

was vergleichst du denn da ?Mfg
Klaus
-
Wie meinst du das genau ?

Wie gehört es anders ?
-
Hallo
Der Code ist syntaktisch in Ordnung. AnsiString hat einen Vergleichsoperator für char* (und auch const char* was ich empfehlen würde)
Benutzt den Debugger und schau was die ComboxBox und die char-variable zur Laufzeit wirklich für Werte haben. Wenn die Bedingung wirklich nicht erfüllt wird dann hat der Computer immer recht und die beiden sind verschieden.
bis bald
akari
-
Hallo
Probier es doch mal mit
if(strcmp(TComboBox1->Text.c_str(),Art)==0)
mit TComboBox1->Text.c_str() wandelst du den String temporär in ein Char-Array Um.
strcmp ist eine Funktion zum Vergleichen von Zeichenarrays (Texte)
-
Hallo
@Deforation : Das ist absolut nicht notwendig. AnsiString hat einen Vergleichsoperator.
bis bald
akari
-
Danke für die Antworten, aber es hatte einen anderen Fehler, den ihr nach meiner Erklärung nie finden hättet können.
Und zwar gab ich nicht die Zahlen 2 und 3 als int Werte her, sondern Zahlen mit Komma...
Daher brauchte ich ein double Wert1 etc....
Trotzdem danke für eure Hilfe !