Programmieren - alles kontrollieren 4.935 Themen, 20.621 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
d-oli chris02 „C++ Builder Fragen“
Optionen

Hi,

1. Wie kann ich ein Array zur Laufzeit, also "dynamisch" erweitern. Geht das überhaupt mit einem normalen Array?
Mit der C standard library geht das so:

void * realloc ( void * memblock, size_t size );

Reallocate memory block.
The size of the block pointed to by memblock parameter is changed to the size in bytes specified, expanding or reducing the amount of memory accessible in that block.
The block could be moved to a new location in some cases, in this case the pointer returned by the function will point to the location. The content of the block will remain unchanged even if the block is moved and will be accessible from the new pointer.
In case that memblock is NULL the function behaves exactly as malloc assigning a new block of size bytes and returning a pointer to the beginning of it.
In case that size is 0 the memory previously allocated in memblock is deallocated and a NULL pointer is returned. Dynamic memory allocated with malloc, calloc and realloc should be freed using free once it is no longer needed.


#include <stdio.h>
#include <stdlib.h>

#define SIZE_1 4
#define SIZE_2 6

int main()
{
  int count;
  int *iArray = NULL;
  // Grösse 4
  iArray = ( int* )realloc( iArray, SIZE_1 * sizeof( int ) );
  // Array füllen
  for( count = 0; count < SIZE_1; count ++ )
  {
    iArray[ count ] = count + 1;
  }
  // Ausgabe
  for( count = 0; count < SIZE_1; count ++ )
  {
    printf( "iArray[ %i ] = %i\n", iArray[ count ], iArray[ count ] );
  }

  printf( "\n" );

  // Erweitern auf grösse 6
  iArray = ( int* )realloc( iArray, SIZE_2 * sizeof( int ) );
  // Array füllen
  for( count = ( SIZE_1 - 1 ); count < SIZE_2; count ++ )
  {
    iArray[ count ] = count + 1;
  }
  // Ausgabe
  for( count = 0; count < SIZE_2; count ++ )
  {
    printf( "iArray[ %i ] = %i\n", iArray[ count ], iArray[ count ] );
  }

  free( iArray );
  
  return 0;
}


2. Wie erstelle ich zur Laufzeit ein Graphik Objekt, wie z.B. einen Button, oder ein Memo Feld?
Ich kenne die den ( Borland ?) C++ - Builder nicht. Aber normalerweise wird ein Pointer der entsprechenden Klasse deklariert und mit new aloziert.

#define HEIGHT 12
#define WIDHT 120

button *TheButton;

TheButton = new button( HEIGHT, WIDHT, "OK" );

Gruss, d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen