Variablennamen als CString abspeichern
-
Hallo,
weiß jmd ob es eine einfache Möglichkeit gibt einen Variablennamen als CString zu erhalten?
TCHAR myVarName; CString test; /* test.Add(myVarName), so dass danach "myVarName" in test steht */
Gruß
Bernd
-
Deine Variablenbezeichner existieren zur Laufzeit nicht mehr, daher wird das nicht klappen. Du müsstest sie schon selbst als Stringliterale speichern, und das artet in extreme Tipparbeit aus.
Wozu willst du das denn haben?
-
_matze schrieb:
Deine Variablenbezeichner existieren zur Laufzeit nicht mehr, daher wird das nicht klappen. Du müsstest sie schon selbst als Stringliterale speichern, und das artet in extreme Tipparbeit aus.
Wozu willst du das denn haben?
Ich hab eine CStringList, welche aus Namen und Werten besteht für verschiedene Eingabefelder:
z.B. (name = IpAdressField1)(value= 192.168.24.1)
z.B. (name =checkbox1 ) (value = checked)Vielleicht gibt es hier auch eine bessere Möglichkeit diese zu speichern (allerdings benötige ich einen schnellen Zugriff mittels Suche auf die einzelnen Items); also ein Array ist jetzt nicht so gut...
Meine Oberfläche besteht aus diesen Elementen (Checkbox checkbox1 etc.) und über die Liste erhalten diese die aktuellen Werte, die durch verschiedene Sachen verändert werden können...
Jetzt such ich halt nach einer einfachen Möglichkeit, die einfach auch erweiterbar ist, diese Werte anhand der Namen den richtigen Elementen (Buttons, Checkboxen, IpAddresFeldern etc.) zuzuordnen.
Gruß
Bernd
-
Bernd09 schrieb:
Ich hab eine CStringList, welche aus Namen und Werten besteht für verschiedene Eingabefelder:
z.B. (name = IpAdressField1)(value= 192.168.24.1)
z.B. (name =checkbox1 ) (value = checked)Ich beschäftige mich mit der MFC schon seit Ewigkeiten nicht mehr richtig, aber wenn ich mich nicht irre, gibt es doch vermutlich eine gemeinsame Basisklasse der Controls.
// Je nachdem ob die Namen wirklich erhalten werden müssen: // - Variante a) ohne Namen std::map<CControl*, String> controlValues; ... // - Variante b) mit Namen std::map<String, String> controlNameToValue; // Für die Werte std::map<String, CControl*> controlNameToControl; // Für die Controlzuordnung ...
Aber ohne zu wissen was du wirklich willst, kann ich nicht sagen ob dies wirklich sinnvoll ist.
-
das mit der CMap scheint echt ganz brauchbar zu sein.
Geht auch diese Version?
std::map<String, String, String> controlNameToValue; // Für die Werte
-
Nein, aber mit
std::pair
kannst du zwei Strings gruppieren.
-
Bernd09 schrieb:
das mit der CMap scheint echt ganz brauchbar zu sein.
Also unabhängig ob die MFC vielleicht eine CMap enthält (was sie vermutlich tut), solltest du nicht vor allen Klassennamen ein "C" vorstellen, wenn dies verwirren kann (da es zwei verschiedene Klassen, ich meinte die aus der C++ Standardbibliothek, und die heißt "map" nicht "CMap"). Zu einer CMap kann ich dir kein Beispiel liefern, da ich sie nicht kenne.