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

С++ для начинающих

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

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

21.06.2009, 20:45. Просмотров 4955. Ответов 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++):

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

Как правильно объявить массив объектов - C++
Как правильно объявить массив объектов: #include <cstdlib> #include <iostream> using namespace std; class orenda_kvartiri {...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
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 / 5
Регистрация: 14.03.2009
Сообщений: 462
21.06.2009, 22:40 #4
внутри квадратных скобок и задается количество элементов
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
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
2359 / 1054 / 44
Регистрация: 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
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.06.2009, 00:47 #9
Вот. Пришли к указателям, как я с самого начала и говорил. AutoBot, стоило так долго выбирать? Дело в том, что этот "ответ" находится в любой книжке по С++. Я же тебе в личку писал почитать про указатели. Эх...
0
AutoBot
290 / 5 / 0
Регистрация: 17.06.2009
Сообщений: 82
22.06.2009, 00:56  [ТС] #10
Так я ж не знаю синтаксиса C++...
Я не знал, что это указатели, пока Вы сейчас не сказали...

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

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

Как правильно объявить структуру - C++
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 5...

Как правильно объявить статический метод - C++
например class A { private: static void method(); // объявление }; // как правильно объявить реализацию?

Как правильно объявить vector в классе? - C++
как правильно объявить вектор? #include <vector> #include <algorithm> using namespace std; extern int map; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.06.2009, 00:56
Ответ Создать тему
Опции темы

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