Strona 1 z 1

Kasowanie tablicy dynamicznej obiektów typu TButton.

Nowy postNapisane: czwartek, 31 grudnia 2009, 02:54
przez markopol
Mam deklaracje:

Kod: Zaznacz cały
TButton  *Przycisk[500];


Dlatego 500,bo to jest maksymalna ilość buttonow,którą użytkownik może podać.

Tworzyłem tablicę buttonow w ten sposób:


Kod: Zaznacz cały
   i=1;

   do
    {
        Przycisk[i] = new TButton(Form1);
        Przycisk[i]->Parent = Form1;
      i++;
     }
   while(i<=n);



n-podaje uzytkownik

Po utworzeniu pojawiają mi się na formie buttony- OK

Pytanie:

Jak je poprawnie skasować abym mogł ponownie wykonać operację tworzenia tablicy buttonow(ostatni kod)? Buttony muszą zniknąć z formy. Muszę przed ponownym tworzeniem umieścić znów pierwszy kod?(wg mnie tak).


Probowałem rożnych kobinacji z delete ale nonstop są błedy

Re: Kasowanie tablicy dynamicznej obiektów typu TButton.

Nowy postNapisane: czwartek, 31 grudnia 2009, 10:33
przez Cyfrowy Baron
Jak je tworzysz tak je niszcz czyli też w pętli, ale można kasować tylko istniejące obiekty, jeżeli odwołasz się do nieistniejących to będą błędy.

Kod: Zaznacz cały
  int i = 0;

   do
    {
        delete Przycisk[i];
        i++;
     }
   while(i <= n - 1);




I zapamiętaj sobie raz na zawsze: tablice są liczone od 0 (zera), a nie od jeden, czyli i musi równać się 0, ale musisz je wyliczać do n - 1, czyli tablica która składa się z 500 elementów jest liczona w zakresie 0 - 499, czyli tworząc n elementów liczysz od 0 i do n - 1, a nie do n.

Re: Kasowanie tablicy dynamicznej obiektów typu TButton.

Nowy postNapisane: piątek, 1 stycznia 2010, 20:35
przez usermaw
Cyfrowy Baron napisał(a):I zapamiętaj sobie raz na zawsze: tablice są liczone od 0 (zera), a nie od jeden, czyli i musi równać się 0, ale musisz je wyliczać do n - 1, czyli tablica która składa się z 500 elementów jest liczona w zakresie 0 - 499, czyli tworząc n elementów liczysz od 0 i do n - 1, a nie do n.


A dokladniej, "czysty" C++ i języki C pochodne indeksowane są od 0.
Ale Borlandowskie dodatki do srodowiska, jak np AnsiString indeksowany jest od 1. Podobnie wiersze, kolumny StringGrid, DrawGrid z VCL indeksy maja od 1.
Gdy zechcesz lączyć w kodzie klasyczna tablicę C-pochodne z np indeksami - Captionami z VCL, zawsze trzeba pamiętac, gdzie +1, gdzie -1.