Elemente verschieben im Dynamisches Array
-
Ich möchte in einem dynamischen ButtonArray nach dem Prinzip:
ButtonArray[i]=ButtonArray[i+1]ein Element im Array verschieben, um das ButtonArray[i] dadurch zu entfernen. Das letzte, auf obige Weise enstandene doppelte Element wird selbstredend dann über delete bzw. Length entfernt)
Obiger Code will aber nicht so wie ich will. Die Alternative über Copy bzw. CopyRange und/oder mit Hilfsarray hat mir bisher auch leider nicht weiter geholfen.
Die Suche hat mir bislang ebenso wenig geholfen wie die BCB-Hilfe. Falls jemand einen Link oder einen Trick/Code für obiges Problem kennt, wäre es nett, wenn er diesen mir mitteilen würde?
Besten Dank...
Smilie
-
Benutz DynamicArray oder std::vector. Dann lösen sich die Probleme quasi von selbst

-
Benutz DynamicArray
??? Da stehe ich jetzt ein wenig auf dem Schlauch.
ButtonArray wird über
DynamicArray<TButton*>ButtonArrayangelegt.
Vielleicht könntest du mir das doch trotzdem noch ein wenig näher bringen, was du genau meinst.
-
Zu DynamicArray musst du die Hilfe konsultieren, habe selbst noch nicht mit DynamicArray gearbeitet. Sollte aber nicht so schwer sein.
std::vector funktioniert folgendermaßen:
//In Headerdatei #include <vector> class TForm1 : public TForm { private: std::vecto<TButton*> buttons; } //In Cpp //Button hinzu TButton *bt = new TButton(this); bt->Parent = this; bt->Caption = "Button"; buttons.push_back(bt); //Button entfernen buttons.pop_back(bt); //entfernt letzten Button; mit erase kannst du auch mitten drin entfernen //Zugriff buttons[index]; //Oder über IteratorenBei Problemen mit vector, Suche benutzen und im C++ Forum suchen

-
Vielen 1000 Dank.

War das eine lange Nacht...
Mittlerweile habe ich es ungefähr so hingekriegt, wie ich es haben wollte, dank deiner Hilfe.erasewar genau das, was ich brauchte.
PS:
buttons.pop_back(bt);da muss wohl das bt weg ?!?!?!?

Vielen Dank nochmal...
Smilie (nicht mehr verzweifelt)

-
Smilie(verzweifelt) schrieb:
PS:
buttons.pop_back(bt);da muss wohl das bt weg ?!?!?!?

Ja bt muss weg. pop_back() erwartet keine Paramter (Copy 'n' Paste Fehler) +g+