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 übervector<TMyRec*> Adressen;meinen Vector.
Danach hinter dem newAdressen.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 ichGruss 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