Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Робота с двумерым массивом, ... помогите... 
V
    Опции темы
Sharkfire
  Дата 30.11.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 30.11.2006
Где: Одесса

Репутация: 2
Всего: 2



Здрасте!
Функция создаёт двумерный массив map размерами fWidth на fHeight и заполняет его символом f.

Вот код:
Код

//---------------------------------------------------------------------------
bool __fastcall TForm1::NewMap(int rWidth,int rHeight,short f)
{
fWidth  = rWidth;
fHeight = rHeight;

try
   {

map=(char**)  malloc((fHeight)*sizeof(char));
for(int y=1;y<fHeight;y++)
map[y]=(char*) malloc((fWidth)*sizeof(char));

    }
catch(Exception &e)
{ShowMessage("Error creating map: "+e.Message);return 0;}


for(int y=0;y<fHeight;y++)
{
 tmp=map[y];
  for(int x=0; x<fWidth; x++, tmp++)
 *tmp=f;
}

return 1;
}
//---------------------------------------------------------------------------


Вылазиет ошибка, при создании причём разные... что самое странное и когда закрываю приложение тоже "Invalid pointer operation" что делать!!! Что я делаю не так!! 
 smile  smile  smile  smile 
PM MAIL ICQ   Вверх
Partizan
Дата 30.11.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



во-первых....ИНДЕКСАЦИЯ В МАССИВАХ НАЧИНАЕТСЯ С 0 А НЕ С 1....
поуему у тебя:
Код

for(int y=1;y<fHeight;y++)
map[y]=(char*) malloc((fWidth)*sizeof(char));


а во вторых...мой тебе совет....если у тебя не требуется динамически поменять размеры массива без потери предыдущих значений с помощью realloc, то лучше уж пользуй C++  style в лице new и delete....
тогда твой код преобразуется в слежуцющий:

Код

//---------------------------------------------------------------------------
bool __fastcall TForm1::NewMap(int rWidth,int rHeight,short f)
{
fWidth  = rWidth;
fHeight = rHeight;

char **map;

try
   {

map=new char *[fHeight];
for(int y=1;y<fHeight;y++)
map[y]=new char[fWidth]; 

    }
catch(Exception &e)
{ShowMessage("Error creating map: "+e.Message);return 0;}

return 1;
}
//--------------------------------------------------------------------------- 
 



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Sharkfire
Дата 30.11.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 30.11.2006
Где: Одесса

Репутация: 2
Всего: 2



Точно!! огромное спасибо!! Надо сразу допереть )))  smile  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.