Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
evil0o
5 / 5 / 0
Регистрация: 04.07.2010
Сообщений: 200
#1

Передача и возврат указателя из массива - C++ Builder

07.03.2012, 01:15. Просмотров 867. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
проблема с указателями как я догадываюсь.
функция im исправно работает исправно но при объединение с BoolTooAniStr в итоговом массиве при выводе в edit масив частично содержит не верные значения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 bool *im(TImage* Image_BMP)
{
  int i,j,g=0;
  bool mas[342];
 
  for (i = 0;i<18;i++)
    for (j=0;j<19;j++) {
     if(Image_BMP->Canvas->Pixels[j][i]==0)
    mas[g]=1;
     else
       mas[g]=0;
     g++;
    };
  return mas;
}
 
AnsiString BoolTooAniStr(bool *gh)
{  
  AnsiString g="";
  for (int i=0; i< 342;i++) {
    if (gh[i])
      g=g+"1";
    else
      g=g+"0";
  }
  return g;
}
 
void __fastcall TForm16::Button6Click(TObject *Sender)
{  
   bool *gh=im(Image1);
   Edit1->Text=BoolTooAniStr(gh);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2012, 01:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передача и возврат указателя из массива (C++ Builder):

Передача указателя на функцию-член - C++
Всем привет ! Необходимо передать функцию-член в качестве параметра другой функции-члену. Следующий код class Menu { ...

Передача типа указателя на функцию - C++
Всем привет. Недавно в теме начинающих возник вопрос, а можно ли передать тип (указатель на функцию) без использования typedef: ...

Передача указателя на объект класса через this - C++ Builder
Всем участникам форума горячий ПРИВЕТ! Вопрос такой. cl.h class cl { public: void cl(); int a; private: DWORD...

Возврат значения массива из функции - C++ Builder
Помогите плз, не могу сделать вывод значения отсортированного массива из функции в void, прога из массива слов ищет слова с нечётным...

Sender и передача массива - C++ Builder
К коде формы создал массив. Двумерный массив являет собой игровое поле. Поэтому я обращался в форме с ним через Screen. Но сделать это в...

Передача массива в функцию - C++ Builder
Проблема с передачей двумерного массива в качестве параметра функции... Есть массив А (размеры массива не емсть главное) Была функция...

5
Sergey-K
234 / 225 / 13
Регистрация: 27.10.2011
Сообщений: 249
07.03.2012, 02:27 #2
evil0o, за пределами функции im массив mas не существует, поэтому билдер пишет что указатель "подозрительный"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//---------------------------------------------------------------------------
bool* im(TImage* Image_BMP, bool* mas)
{
  int g = 0;
  for(int i = 0; i < 18; i++)
     for(int j = 0; j < 19; j++)
       {
         if(Image_BMP->Canvas->Pixels[j][i] == 0)
           mas[g] = 1;
         else
           mas[g] = 0;
         g++;
       }
  return mas;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  bool massiv[342];
  bool *gh = im(Image1, massiv);
}
//---------------------------------------------------------------------------
1
evil0o
5 / 5 / 0
Регистрация: 04.07.2010
Сообщений: 200
08.03.2012, 15:00  [ТС] #3
решил слить в одну функцию, вопрос такой, правильно ли я все сделал, не будет ли каких либо утечек и т.п. можно ли что то оптимизировать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
AnsiString ImageToBoolAndStr(TImage* Image_BMP/*картинка*/, bool* mas//масив в буле возвращет*/)
{
  int g = 0;
 
  for(int i = 0; i < 18; i++)
  for(int j = 0; j < 19; j++)
      {
         if(Image_BMP->Canvas->Pixels[j][i] == 0)
           mas[g] = 1;
         else
           mas[g] = 0;
         g++;
      }
 
  AnsiString Str="";
    for (int i = 0; i < 342; i++)
{    if (mas[i])
        Str=Str+"1";
     else
      Str=Str+"0";
}
return (Str);  /*возврат в AnsiString*/
};
0
Sergey-K
234 / 225 / 13
Регистрация: 27.10.2011
Сообщений: 249
08.03.2012, 15:14 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
AnsiString ImageToBoolAndStr(TImage* Image_BMP)
{
  bool mas[342];
  int g = 0;
  for(int i = 0; i < 18; i++)
    for(int j = 0; j < 19; j++)
      {
        if(Image_BMP->Canvas->Pixels[j][i] == 0)
          mas[g] = 1;
        else
          mas[g] = 0;
        g++;
      }
  AnsiString Str;
  for(int i = 0; i < 342; i++)
    {
      if(mas[i])
        Str += "1";
      else
        Str += "0";
    }
  return Str;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str = ImageToBoolAndStr(Image1);
}
0
evil0o
5 / 5 / 0
Регистрация: 04.07.2010
Сообщений: 200
08.03.2012, 23:23  [ТС] #5
мне и bool массив из функции выводит нужно.
0
Sergey-K
234 / 225 / 13
Регистрация: 27.10.2011
Сообщений: 249
08.03.2012, 23:37 #6
Тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
AnsiString ImageToBoolAndStr(TImage* Image_BMP, bool* mas)
{
  int g = 0;
  for(int i = 0; i < 18; i++)
    for(int j = 0; j < 19; j++)
      {
        if(Image_BMP->Canvas->Pixels[j][i] == 0)
          mas[g] = 1;
        else
          mas[g] = 0;
        g++;
      }
  AnsiString Str;
  for(int i = 0; i < 342; i++)
    {
      if(mas[i])
        Str += "1";
      else
        Str += "0";
    }
  return Str;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  bool mas[342];
  AnsiString str = ImageToBoolAndStr(Image1, mas);
  //здесь массив mas уже инициализирован
}
0
08.03.2012, 23:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 23:37
Привет! Вот еще темы с ответами:

Передача массива от клиента к серверу - C++ Builder
Здравствуйте. Суть такова. Когда в одной проекте на Form1 у меня клиент, а на Form2 у меня сервер и я передаю массив от клиента к серверу,...

Передача массива из Form1 в Form2 - C++ Builder
в первой форме вычисляю значения массива a по кнопке открываю вторую форму и надо построить трехмерный график опираяясь на значения в...

Передача массива из потока в поток - C++ Builder
Написал очень кривую программу, помогите поправить, поскольку прогать только начинаю, что она делает: во втором потоке формируется массив...

Передача двумерного массива в функцию - C++ Builder
#include &lt;vcl.h&gt; #pragma hdrstop #include &lt;stdio.h&gt; #include &lt;cstdlib&gt; #include &quot;File1.h&quot; #pragma argsused int main() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru