Objekte eines TreeView wieder abbauen



  • Hi,
    ich habe ein Problem. Ich arbeite mit dem BCB6 und habe mir einen Tree mit Objekten gemäß der Hilfe des BCB gemacht.

    typedef struct MyRec
    {
      AnsiString FName, LName;
    
    } TMyRec;
    typedef TMyRec* PMyRec;
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    PMyRec  MyRecPtr;
    int TreeViewIndex;
    TTreeNodes* pItems;
    
     MyRecPtr = new TMyRec;
     MyRecPtr->FName = Edit1->Text;
     MyRecPtr->LName = Edit2->Text;
     TreeViewIndex = StrToInt(Edit3->Text);
     pItems = TreeView1->Items;
     if (pItems->Count == 0)
       pItems->AddObject(NULL, "Item" + IntToStr(TreeViewIndex), MyRecPtr);
     else if ((TreeViewIndex < pItems->Count) && (TreeViewIndex >= 0))
    
          pItems->AddObject(pItems->Item[TreeViewIndex], "Item" + IntToStr(TreeViewIndex), MyRecPtr);
    }
    

    Jetzt zu meinem Problem.
    Wie bekomme ich die Objekte wenn sie nichtmehr benötigt werden wieder abgebaut?
    Ich hatte mir das so vorgestellt, dass ich einem Vector alle Adressen von MyRecPtr sammeln lasse, und wenn die Objekte nichtmehr benötigt werden, mit delete abbaue.
    Leider hapert es in der Praxis.
    Ich mache über

    vector<TMyRec*> Adressen;
    

    meinen Vector.
    Danach hinter dem new

    Adressen.push_back(MyRecPtr);
    

    lasse ich Ihn sammeln. Das funktioniert aber alles nicht. Kann mir da jemand einen denkanstoss geben?

    Danke

    CU Carsten



  • Hallo,

    Was funktioniert denn nicht?



  • Ich habs in der Zwischenzeit hinbekommen.
    Ich sammle in einem zweiten Vector die Adressen und lasse die Objakte dann zur Laufzeit, wenn benötigt, über eine Funktion abbauen.
    Habs mit dem Code Guard geprüft und funktioniert.
    War nur etwas verwirrt wegen dem Zeiger usw., also reine Syntax und Semantik Probleme 😃

    Mein Problem lag darin, dass über das Typdef ein Zeiger fürs Objekt schon erstellt wurde und die Objekte alle schon Zeiger waren...
    Also reine "Anfängerprobleme" denke ich

    Gruss Carsten



  • Hallo Carsten,

    ich kämpfe mit einem ähnlichen Problem, habe es aber noch nicht hinbekommen.
    Es würde mir sehr helfen, wenn Du mir die relevanten Codestellen von Dir (Sammeln der Adressen in einem zweiten Vector und Abbauen der Objekte zur Laufzeit, wenn benötigt, über eine Funktion) per Email schicken könntest.

    Vielen Dank

    Birgit


Anmelden zum Antworten