Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/41: Рейтинг темы: голосов - 41, средняя оценка - 4.95
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
1

Как правильно объявить массив байтов?

21.06.2009, 20:45. Просмотров 7837. Ответов 9
Метки нет (Все метки)

Как правильно объявить массив байтов?
Надо ли вручную выставлять ему размер после "GetBitmapBits"?

Я делал так:

C++
1
      extern byte pxls[];
Но он при "билде" на что-то ругается...

MFCDlgAppDlg.obj : error LNK2001: unresolved external symbol "unsigned char * pxls" (?pxls@@3PAEA)
Debug/MFCDlgApp.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Или может я не правильно его заполняю...

C++
1
      pxls[i]=i;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2009, 20:45
Ответы с готовыми решениями:

Как правильно объявить массив объектов
Как правильно объявить массив объектов: #include <cstdlib> #include <iostream> using namespace...

Как правильно объявить массив строк c++
Подскажите пожалуйста, как реализовать: нужно корректно обьявить массив символов(неполучается)...

Как правильно объявить массив заданной пользователем размерности
1 cout << "введите количество X: "; 2 cin >> x; 3 double massiv; как сделать правильно, чтобы...

Как в классе правильно объявить массив с константой в качестве размерности?
Приветствую всех! Написал следующий код: Unit1.h class WireBare_Open { const int...

9
Почетный модератор
7254 / 2531 / 255
Регистрация: 29.07.2006
Сообщений: 13,429
21.06.2009, 20:53 2
Если начать с самого начала, то для взятия буфера битмапа используется GetDIBits, а GetBitmapBits просто оставлена для совместимости с 16-битной версией винды.
Память под буфер ты, конечно, должен выделить до.
Зная, что char имеет размер одного байта, я бы просто сделал char *buffer. И выделил бы для него память.
Читай MSDN.

P. S. я тебе уже писал, что структура BITMAP содержит в себе указатель на буфер с данными битмапа. Никуда их вообще копировать не нужно, чтобы с битмапом работать.
0
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
21.06.2009, 21:38  [ТС] 3
to Vourhey
Зная, что char имеет размер одного байта
Хм... Вроде знал, но как-то не вспомнил вовремя... Спасибо...
Читай MSDN.
Пробовал... Не получается...

структура BITMAP содержит в себе указатель на буфер с данными битмапа. Никуда их вообще копировать не нужно, чтобы с битмапом работать.
Я не умею с таким работать... Даже приблизительно не представляю что это...
Вы забыли? Я же Дельфист:

Цитата Сообщение от Vourhey Посмотреть сообщение
Большинство программистов C++builder, delphi даже не знаю, что существует такая вещь, как winapi, сообщения и т. д.. Кошмар.



P.S. Я всегда делаю всё как-то по-своему, да ещё и наполовину наугад...


Я же уже говорил - впервые открыл этот C++... (если точнее, то уже пять дней назад)
Я даже синтаксиса нормально не знаю...


И это уже другая тема и другой вопрос...

Сделал с Char:

C++
1
    char pxls[];
Говорит:

MFCDlgAppDlg.cpp(113) : error C2133: 'pxls' : unknown size
Кто-то подскажет, как задать размер?
0
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
21.06.2009, 22:40 4
внутри квадратных скобок и задается количество элементов
0
Почетный модератор
7254 / 2531 / 255
Регистрация: 29.07.2006
Сообщений: 13,429
21.06.2009, 22:44 5
задай размер при выделении памяти.
0
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
21.06.2009, 22:52  [ТС] 6
внутри квадратных скобок и задается количество элементов
Я это сильно подозревал, но мне нужно задавать количество элементов через переменные...

Если точнее, то как-то так:
C++
1
char pxls[n*3*h];
И он говорит на это:
MFCDlgAppDlg.cpp(117) : error C2057: expected constant expression
MFCDlgAppDlg.cpp(117) : error C2466: cannot allocate an array of constant size 0
MFCDlgAppDlg.cpp(117) : error C2133: 'pxls' : unknown size
Хотя все переменные объявлены ( int n; int h; ) и всем присвоены соответствующие значения...
0
MCSD: APP BUILDER
8787 / 1065 / 104
Регистрация: 17.06.2006
Сообщений: 12,604
21.06.2009, 23:50 7
AutoBot,
мне нужно задавать количество элементов через переменные...
Тогда тебе нужно взять компилятор, удовлетворяющий стандарту C99
0
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
22.06.2009, 00:43  [ТС] 8
Всем спасибо...))
Нашёл ответ на соседнем форуме...

C++
1
2
3
4
5
LPBYTE pPixels = new BYTE[w * h * 4];
 
// операции с массивом pPixels
 
delete[] pPixels;
0
Почетный модератор
7254 / 2531 / 255
Регистрация: 29.07.2006
Сообщений: 13,429
22.06.2009, 00:47 9
Вот. Пришли к указателям, как я с самого начала и говорил. AutoBot, стоило так долго выбирать? Дело в том, что этот "ответ" находится в любой книжке по С++. Я же тебе в личку писал почитать про указатели. Эх...
0
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
22.06.2009, 00:56  [ТС] 10
Так я ж не знаю синтаксиса C++...
Я не знал, что это указатели, пока Вы сейчас не сказали...

Я же тебе в личку писал почитать про указатели
У меня щас экзамены горят... Не успел сбегать книг купить...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2009, 00:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Объявить массив? Запросто! Объявить массив массивов? А как это?
Доброго времени суток! Конечно, все знают, как объявить массив! int main () { int array; }

Как правильно объявить fopen
Доброго времени суток. наткнулся на некоторого рода проблемку. Не могу объявить fopen.. Описываю...

Как правильно объявить структуру
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости...

Как правильно объявить вектор?
Только начинаю постигать STL. Подскажите, как заполнить случайными числами 1..9 значения...


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

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

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