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 !


  • Mod

    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 !


Anmelden zum Antworten