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.
akariJa 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.