Ausdruck lässt sich kompilieren ?



  • TLabel* Titel;
    if (Titel == "Enabled") // wird kompiliert
    

    anstatt:

    TLabel* Titel;
    if (Titel->Caption == "Enabled") // Eigentlich richtig
    

    Warum spuckt er nicht aus:
    MÄÄÄÄP WILL ICH NICHT !



  • Weil "Enabled" als const char* interpretiert wird. Da beide Variablen Zeiger sind lassen sie sich natürlich vergleichen, wenn auch sinnfrei.



  • Hallo

    In der ersten Version wird die Speicheradresse eines TEdit mit der Speicheradresse eines String-Literals verglichen. Als Altlast aus C ist das auch in C++ ein gültiger Vergleich, da nur die Adressen und nicht der Inhalt oder Typ der Daten hinter den Adressen zählt. Da hilft nur aufpassen.

    bis bald
    akari



  • akari schrieb:

    Da hilft nur aufpassen.
    akari

    Ja das hat mich 3 Minuten Zeit gekostet, weil ich es übersehen habe,
    natürlich war das ganze immer false und ich hab mich gewundert, bis ich mal richtig hingeschaut habe.


Anmelden zum Antworten