Abstrakter Fehler.
-
Guten Morgen,
Habe hier folgendes Problemim header eine Struktur
und einen Vector dieser Strukturstruct cell { TPanel *panel; //Dieses Panel ist Parent von TRichEdit *rEdit; // diesem TEdit *edit; // diesem TButton *button; // diesem TLabel *label; // und diesem Control }; vector<cell> cells;Wenn ich ein Element aus dem Vector löschen will, mache ich das folgendermaßen
delete cells[i].rEdit; delete cells[i].edit; delete cells[i].button; delete cells[i].label; delete cells[i].panel; for(unsigned int x=i; x<cells.size()-1; x++){ Application->ProcessMessages(); cells[x] = cells[x+1]; } Application->ProcessMessages(); cells.resize(cells.size()-1);Ich denke eigentlich sollte es so gehen.
Aber ich bekomme Fehlermeldungen wie
'Abstrakter Fehler.'
und
'Zugriffsverletzung' bei...'Sieht jemand Fehler im Code?
-
Wenn ich mich nicht irre, muss panel als Parent die Form haben, welche dann wiederum das Zerstören übernimmt. Oder liege ich da falsch?
Wenn nicht, dann kannst du den delete Aufruf weglassen.
-
Hallo
- du solltest statt deinem verschieben und resize()- Aufruf zum Löschen eines Elementes aus einem vector vector::erase verwenden.
- du soltest das Aufräumen der Komponenteninstanzen dem Destructor des structs cell überlassen, den du noch anlegen must. Analog kannst du auch den Konstruktor für das Erzeugen benutzen.
- Wie hast du denn die Owner der Controls gesetzt? Denn die Eigenschaft Owner gibt an, welches andere Control für das Löschen eines Controls veranwortlich ist. Owner kann NULL sein, dann must du selber das löschen übernehmen. Parent gibt dagegen an, in welchem anderen WinControl das Control angezeigt werden soll.bis bald
akari