Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 20:55   #1
i-cpp
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 33
Вопрос Динамический двумерный массив кнопок. Вопрос

Пишу на си билдере.
Нужно создать динамический двумерный массив из кнопок типа TSpeedButton.
TSpeedButton *btnArray[size][size]; не годится, т.к. это статический массив.
А мне нужно int size; доставать из файла.
Нужно что-то вроде этого, только это не работает, так нельзя:
Код:
        TSpeedButton **(*btnArray);
	btnArray = new TSpeedButton(Form1)*[fieldObj.SIZE];
	for (int i = 0; i != fieldObj.SIZE; ++i)
		btnArray[i] = new TSpeedButton(Form1)[fieldObj.SIZE];
помогите разобраться, пжл
i-cpp вне форума Ответить с цитированием
Старый 25.01.2010, 21:16   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
       TSpeedButton **(*btnArray);
Чтож это у вас тут сразу три-то звездочки? Надо где-то так:
Код:
TSpeedButton ** btnArray;
btnArray = new TSpeedButton*[fieldObj.SIZE];
for (int i = 0; i < fieldObj.SIZE; i++)
 btnArray[i] = new TSpeedButton(Form1);
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 25.01.2010, 21:17   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от i-cpp Посмотреть сообщение
Нужно создать динамический двумерный массив из кнопок типа TSpeedButton.
Код:
...
int n,m;
//Получить размерность массива
TSpeedButton **array;
array=new TSpeedButton *[n];
for(int i=0; i<n; ++i)
     array[i]=new TSpeedButton[m]
...
//Освободить память
for(int i=0; i<n; ++i)
     delete[] array[i];
delete[] array;
...
Добавлено: Опередили меня выше =)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 25.01.2010, 21:23   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ой, что-то я зарапортовался... Это я ж про одномерный массив написал! Вот так скорее:
Код:
TSpeedButton *** btnArray;
btnArray = new TSpeedButton**[fieldObj.SIZE];
for (int i = 0; i < fieldObj.SIZE; i++)
 {
 btnArray[i] = new TSpeedButton*[fieldObj.SIZE];
 for (int j = 0; j < fieldObj.SIZE; j++)
  btnArray[i][j] = new TSpeedButton(Form1);
 }
Ну и удалять аналогично, только сначала освобождаем память из-под элементов массива, потом сам указатель на массив.
И три звездочки у вас там правильно, конечно.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 25.01.2010, 21:39   #5
i-cpp
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 33
По умолчанию

Гром, спасибо, пашет
i-cpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерный динамический массив amandra Общие вопросы Delphi 16 30.07.2013 22:56
двумерный динамический массив с запросом к пользователю о кол-ве строк и столбцов? vasyapupkin Общие вопросы C/C++ 2 22.11.2009 17:37
Двумерный динамический массив IceExecutioner Общие вопросы Delphi 1 04.06.2009 08:41
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31