TObject zu String
-
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