TObject zu String



  • 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


Anmelden zum Antworten