TObject zu String
-
ups mir is hier auch grad schwer aufgefallen das es garnich das is was ich wollte
ComboBox1->Items->AddObject(Query1->Fields->FieldByName("Titel")->AsString, (TObject *)Query1->Fields->FieldByName("Nummer"));
man kann hier an ne ComboBox zum "Text" auch noch nen Data-wert anhängen
und wie man diesen als String zurückgewinnt wenn ich das so caste bringter mir immer nen Fehler und ich find nirgends warum
-
Überleg mal: Du castest zuerst einen AnsiString nach TObject* und dann das TObject* in ein AnsiString*****.
-
naja ich weiß ja nich komisch is das schon, aber ich versteh nich so recht warum es nicht funktionieren soll, klär mich doch bitte mal auf
oder gibts ne andere möglichkeit einem combobox-element etwas anzuhängen so wie beim treevies
-
Nochmal etwas deutlicher. Du castest:
1. Objekt -> Zeiger (AnsiString) (TObject*) 2. Zeiger -> Zeiger (TObject*) (AnsiString*)
-
naja so versuch ich das ja klappt aber nich, normal sollte es ja kein prob sein, da alles Zeiger sind oder seh ich das irgendwie falsch oder was blick ich da nicht richtig
jeder String ist ja auch blos ein Zeiger und Tobject wird da halt gefordert
aber es klappt nicht und warum nicht mehr wollt ich eigentlich garnicht wissen
Oder spielt da die Klassenhirrarchie ne Rolle??
"neu in C-C++ Umstieg von PHP"
[ Dieser Beitrag wurde am 01.02.2003 um 20:40 Uhr von Voodookiller editiert. ]
-
Original erstellt von Voodookiller:
jeder String ist ja auch blos ein Zeiger und Tobject wird da halt gefordertÜberleg nochmal ob das stimmt.
String A; //ist das ein String, ein Zeiger, keins von beiden oder beides?
[ Dieser Beitrag wurde am 01.02.2003 um 23:02 Uhr von Eßer editiert. ]
-
jeder String ist ja auch blos ein Zeiger
vielleicht verwechselst du C-Strings ( char*, bzw. char[] , als typedef auch LPSTR gennant) mit der String-Klasse des BCB (die intern auch auf char* aufgebaut ist) ?
[ Dieser Beitrag wurde am 01.02.2003 um 23:52 Uhr von crass editiert. ]
-
pItem = TreeView1->Items->AddChildObject(TreeView1->Items->Item[indexmenu], Query1->Fields->FieldByName("Titel")->AsString, MyRecPtr); AnsiString suchwert = PMyRec(TreeView1->Selected->Data)->id;
ich versteh nu was du meinst, aber bei nem Treeview kann ich auch ne "ergänzung" anhängen , wie ist das denn dann bei ner Combobox möglich
[ Dieser Beitrag wurde am 02.02.2003 um 20:03 Uhr von Voodookiller editiert. ]
-
Hmmm TComboBox::Items und von dem typ schaust du mal schnell die Eigenschaften durch ok? (-;
-junix
-
habs durchgekuckt find aber nix, deswegen frag ich ja hier
-
Meinst du sowas?
String* test = (String*)(ComboBox1->Items->Objects[ComboBox1->ItemIndex]); AnsiString str = *test; ShowMessage(str);
-
ComboBox1->Items->AddObject("vsIcon1", (TObject *)vsIcon); ComboBox1->Items->AddObject("vsList1", (TObject *)vsList);
ja sowas mein ich, das sind mal 2 einträge. aber das löst das problem nicht, ich krieg das ne zugriffsverletzung wenn ich die funktion benutze
-
Ich gehe mal davon aus, dass vsIcon und vsList Strings sind. Für diese musst du natürlich Speicher allokiert haben. Das heißt:
AnsiString* vsIcon = new AnsiString; *vsIcon = "Hallo Welt"; ComboBox1->Items->AddObject("vsIcon1", (TObject*)vsIcon);
Herausholen kannst du es wieder so:
AnsiString str = *(AnsiString*)(ComboBox1->Items->Objects[ComboBox1->ItemIndex]); ShowMessage(str);
-
ich danke dir für die Hilfe
AnsiString str = *(AnsiString*)(ComboBox1->Items->Objects[ComboBox1->ItemIndex]);
das war das problem nene zeiger auf nen zeiger, aber warum denn wenn ich dich das mal noch fragen darf
-
das war das problem
AUF WELCHES ICH SCHON VORHER DIE LÖSUNG GEPOSTET HATTE!!! Liest du dir denn die Beiträge nicht durch, die auf deine Fragen kommen??? Naja, egal. Das ist kein Zeiger auf nen Zeiger sondern eine sogenannte Dereferenzierung. Zum Beispiel so:
int i = 5; int* ptr_i; ptr_i = &i; // ptr_i zeigt jetzt auf die Adresse, in der der Wert von i steht *ptr_i = 6; // bedeutet: Der Wert in dieser Adresse soll 6 sein ShowMessage(*ptr_i); // Zeigt diesen Wert an (6) ShowMessage(i); // Macht genau das gleiche
ptr_i ist ein Zeiger auf nen int. Ein Sternchen davor (*ptr_i) macht ptr_i zu einer ganz normalen int-Variablen, sozusagen.
[ Dieser Beitrag wurde am 03.02.2003 um 01:06 Uhr von WebFritzi editiert. ]
-
ja ich weiß du hattest beidesmal eigentlich das selbe geschrieben, aber erst zu dem andern posting ist mit die erleuchtung gekommen
danke nochmal