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

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

21.06.2009, 20:45. Просмотров 5436. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2009, 20:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как правильно объявить массив байтов? (C++):

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

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

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

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

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

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

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

P. S. я тебе уже писал, что структура BITMAP содержит в себе указатель на буфер с данными битмапа. Никуда их вообще копировать не нужно, чтобы с битмапом работать.
0
AutoBot
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
EnzoMatrix
120 / 120 / 14
Регистрация: 14.03.2009
Сообщений: 462
21.06.2009, 22:40 #4
внутри квадратных скобок и задается количество элементов
0
Vourhey
Почетный модератор
6491 / 2265 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.06.2009, 22:44 #5
задай размер при выделении памяти.
0
AutoBot
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
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
21.06.2009, 23:50 #7
AutoBot,
мне нужно задавать количество элементов через переменные...
Тогда тебе нужно взять компилятор, удовлетворяющий стандарту C99
0
AutoBot
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
Vourhey
Почетный модератор
6491 / 2265 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
22.06.2009, 00:47 #9
Вот. Пришли к указателям, как я с самого начала и говорил. AutoBot, стоило так долго выбирать? Дело в том, что этот "ответ" находится в любой книжке по С++. Я же тебе в личку писал почитать про указатели. Эх...
0
AutoBot
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
22.06.2009, 00:56  [ТС] #10
Так я ж не знаю синтаксиса C++...
Я не знал, что это указатели, пока Вы сейчас не сказали...

Я же тебе в личку писал почитать про указатели
У меня щас экзамены горят... Не успел сбегать книг купить...
0
22.06.2009, 00:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2009, 00:56
Привет! Вот еще темы с решениями:

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

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

Как правильно объявить vector в классе?
как правильно объявить вектор? #include <vector> #include <algorithm> ...

Как правильно объявить внешнюю структуру
Начал изучение stm32 и возник вопрос Не ругайтесь за лузерский вопрос Задача:...


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

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

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