Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамический массив записей [D7, XP]


Страницы:   1 2

+++vist+++ ©   (2008-08-19 22:46:00) 

Подскажите, как правильно вывести на холст TImage динамический массив записей!

Идея - программа обработки изображения. С исходного изображения считывается матрица записей

type TMatrix = record
red: byte;
green: byte;
blue: byte;
end;

Потом она обрабатывается по определенному алгоритму и снова выводится на холст TImage. Массив динамический, формируется в зависимости от размеров изображения. Вывожу пискели на холст вот таким способом:

FormLoadImage.Image.Picture.Bitmap.Canvas.Pixels[i, j] := RGB(Unit1.image_matrix[i, j].red, Unit1.image_matrix[i, j].green, Unit1.image_matrix[i, j].blue);

Выдается сообщение "Missing operator or a semicolon", хотя ничего там не прощуено...

Самое интересное то, что в случае использования статического массива такое обращение работает нормально!

Подскажите, в чем может быть ошибка?


+++vist+++   (2008-08-30 22:26:00) [1]


> Просто точно ли это всё нужно? Вот взять картинку и попиклельно
> всю устанавливать? Ведь есть же, ну просто куча всего. Обращаться
> к картинке попиксельно - это плохо.


А что я могу сделать если Wavelet сжатие подразумевает попиксельную обработку изображения!


TStas   (2008-08-25 23:09:00) [2]

Просто точно ли это всё нужно? Вот взять картинку и попиклельно всюустанавливать? Ведь есть же, ну просто куча всего. Обращаться к картинке попиксельно - это плохо.


+++vist+++   (2008-08-25 18:58:00) [3]


> И еще добавлю на всякий случай: У кого каша в голове у того
> каша и в коде..... следовательно компилятор сходит с ума)


Ничего подобного! Видел программы, состоящие из откровенной мешанины кода! И ничего - работали!

P.S. Большое спасибо за помощь! Все работает!


Amoeba   (2008-08-25 11:00:00) [4]


> +++vist+++   (25.08.08 08:57) [30]
>
> Ну так знает кто-нибудь в чем ошибка???

Чукча не читатель.
Ты хоть удосужился прочитать и понять посты [22], [27] и [31]?  Или просто прикидываешься дурачком?


Anatoly Podgoretsky   (2008-08-25 10:54:00) [5]


> Ну так знает кто-нибудь в чем ошибка???

В этом

> "array type required".


{RASkov}   (2008-08-25 09:14:00) [6]

> [30] +++vist+++   (25.08.08 08:57)
> Ну так знает кто-нибудь в чем ошибка???

Ошибка в том, что ты слишком наглый. Тебе говоришь либо вопрос задаешь, а ты в штыки...
Ответ в [22],[27] и не забываем про SetLength для динмассивов...


> и говорит "array type required".

Тыб уж полностью показал бы свой код на "этом месте"...
И еще добавлю на всякий случай: У кого каша в голове у того каша и в коде..... следовательно компилятор сходит с ума)


+++vist+++   (2008-08-25 08:57:00) [7]

Ну так знает кто-нибудь в чем ошибка???


+++vist+++   (2008-08-24 19:02:00) [8]


> где то я уже слышал о работе с картинками в RGB варианте
> ;) дежавю?))))))
> зы [5] самое оно для автора...


Дежавю! Я и писал! )))


+++vist+++   (2008-08-24 19:01:00) [9]


> Передаем так:
>  SuperPuperProc(image);


Если передавать так, то указывает на строку присваивания элементу массива

image[i, j].red := i;

где i - число 0..255

и говорит "array type required".

А если не передавать вообще ничего, то программа запускается, но как только идет операция с массивом, тут же выдается Access Violation.

Что интересно: при работе со статической памятью Delphi сама все параметры учитывает! Можно ничего никуда не передавать. А тут не прокатывает...


Amoeba   (2008-08-23 11:13:00) [10]

type
 TImageArray = array of array of TMatrix;

var
 image: TImageArray;

procedure SuperPuperProc(AImage: TImageArray);

Передаем так:
 SuperPuperProc(image);


+++vist+++   (2008-08-23 10:30:00) [11]

Все, понял! Я процедуру вызывал, а параметр при вызове не писал! )))))))))))))

Спасибо!


DVM   (2008-08-23 00:20:00) [12]


> Может, передаем вот так:
>
> SuperPuperProc(^image); ?

давай наугад подставлять спереди и сзади имени переменной символы ^ и @


DVM   (2008-08-23 00:19:00) [13]


> Я именно так и передавал! Ругается!

неправда


+++vist+++   (2008-08-22 23:52:00) [14]


> Передаем так:
>   SuperPuperProc(image);


И где тут указатель? Я именно так и передавал! Ругается!

Может, передаем вот так:

SuperPuperProc(^image); ?


Amoeba   (2008-08-21 00:35:00) [15]

Для начала описываем тип:
type
  TImageArray = array of array of TMatrix;

var
  image: TImageArray;

SuperPuperProc(AImage: TImageArray);

Передаем так:
  SuperPuperProc(image);


Давно пора бы знать элементарные вещи!


+++vist+++   (2008-08-21 00:06:00) [16]


> передать указатель на него. %)


Да это ослу понятно что указатель! Не знаю как, потому и спрашиваю! Вот например массив

image: array of array of TMatrix;

Как передать указатель на него?


Amoeba   (2008-08-20 23:36:00) [17]


> как передать динамический массив в процедуру в качестве
> параметра?
>

Каком кверху.


grisme   (2008-08-20 21:21:00) [18]

передать указатель на него. %)


+++vist+++   (2008-08-20 20:55:00) [19]


> Какое будущее, у тебя такого будущего не будет.


Не зарекайся!

Еще одна проблема возникла: как передать динамический массив в процедуру в качестве параметра?


Anatoly Podgoretsky   (2008-08-20 15:59:00) [20]

Какое будущее, у тебя такого будущего не будет.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо