![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический массив записей [D7, XP]
+++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]Какое будущее, у тебя такого будущего не будет.