Probleme mit Kosntanten "Strings"
-
Hey,
ich habe ein kleines "unnötiges" Problem:
//... #define cap "IP Chat"; #define ver "ALPHA 1.0"; //... frm_main->Caption = cap; //Ausgabe: "IP Chat" frm_main->Caption = cap + ver; //Ausgabe: "IP Chat" frm_main->Caption = ver + cap; //Ausgabe: "ALPHA 1.0" frm_main->Caption = cap + " " + ver; // Fehler: Unzulässige Zeigeraddition
Mein Ziel ist natürlich die Ausgabe des letzteren, das einen Fehler verursacht, also:
"IP Chat ALPHA 1.0"
Was mach ich da falsch?
Danke!
-
Frolo schrieb:
Was mach ich da falsch?
Du versuchst Learning by Doing. Besser wäre es, du würdest ein Grundlagenbuch oder ein Tutorial zu C++ durcharbeiten, statt dich durchzuwurschteln, wie es gerade paßt.
-
Danke für deine sehr hilfreiche und kompetente Antwort. Grundlagen bin ich schon durch, trotzdem finde ich hin und wieder Probleme, die mir als solches nicht vorgekommen sind. Du kannst ja vllt trotzdem sagen, was denn hierbei falsch ist, denn dass du es weißt bringt mir absolut nichts, wenn du es nicht einfach hinschreibst. Ich denke auch, dass das Problem ist, dass ich hier falsch mit Zeigern arbeite, nur weiß ich nicht, wie man das anders machen soll...
-
Der Grundfehler ist schon dass du mit defines arbeitest. Nimm statt dessen konstante Strings.
Lies etwas über die verschiedenen Arten von Strings. Bekomme raus was ein char-Array, ein std::string ein AnsiString, ein Zeichenliteral etc. ist.
z. Bsp.
http://www.willemer.de/informatik/cpp/string.htm
http://de.wikibooks.org/wiki/C++-Programmierung:_Strings
usw.
-
Überleg mal, was der Compiler beim Ersetzen der defines aus deinem Konstrukt macht!
frm_main->Caption = cap + " " + ver;
wird zu:
frm_main->Caption = "IP Chat"; + " " + "ALPHA 1.0";;
Der erste Fehler liegt an den defines:
#define cap "IP Chat"; #define ver "ALPHA 1.0";
wenn schon defines, dann ohne Semikolons:
#define cap "IP Chat" #define ver "ALPHA 1.0"
Da ich den Rest des Programmcodes nicht kenne, kann ich nicht beurteilen, ob defines hier sinnvoll sind oder nicht.
Eleganter wäre aber mit Sicherheit die Verwendung von Strings:String cap = "IP Chat"; String ver = "ALPHA 1.0";
oder char-Arrays
char const cap[] = "IP Chat"; char const ver[] = "ALPHA 1.0";
-
Aber wenn schon Strings, dann bitte so wie Braunstein das schon vorgeschlagen hat:
static const String cap = "IP Chat"; static const String ver = "Alpha V1.0";
Übung für Fortgeschrittene:
Trag diese Informationen in die Versionsinformationen des Projekts ein und lies die zur Laufzeit wieder aus.
-
Vielen Dank für eure Antwort! Ich mache das jetzt mit Strings und es funktioniert einwandfrei.