Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

C++ Builder Fragen

chris02 / 2 Antworten / Flachansicht Nickles

Hallo zusammen,
hab mal zwei Fragen zum Borland C++ Builder.


1. Wie kann ich ein Array zur Laufzeit, also "dynamisch" erweitern. Geht das überhaupt mit einem normalen Array?
Also mal angenommen ich habe sowas:


class A
{
 int MeinArray[5];


 void ArrayErweitern(int x)
 {
  ???
 }  
}


Ich will also das die Methode "ArrayErweitern" das Array "MeinArray" um x viele Elemente erweitern. Aber wie mache ich das genau?


2. Wie erstelle ich zur Laufzeit ein Graphik Objekt, wie z.B. einen Button, oder ein Memo Feld?


Danke schonmal


Gruß


chris

bei Antwort benachrichtigen
mr.escape chris02 „C++ Builder Fragen“
Optionen

Eine lösung wäre:

class A
{
    int *MeinArray;
    int MeinArraySize, MeinArrayAlloc;//verwendete und vorhandene elemente
    A(){MeinArray=NULL;MeinArraySize=0;MeinArrayAlloc=0;}
    ~A(){if(MeinArray) delete[] MeinArray;}
    void ArrayErweitern(int x);
};

void A::ArrayErweitern(int x){
    MeinArrayAlloc+=x;
    int *tempArray=new int[MeinArrayAlloc];
    //hier sollte noch eine abfrage stehen ob "new" erfolgreich war
    memcpy(tempArray, MeinArray, MeinArraySize*sizeof(int));
    delete[] MeinArray;
    MeinArray=tempArray;
}


man muss halt buchhalten über die größe des arrays, am besten ganz tief in der klasse, damit diese verwaltung nur einmal getestet werden muss.
Es könnte ggf. auch templates aus der STL verwendung finden, da braucht es aber schon etwas einarbeitung.

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen