Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2007, 08:10   #1
Саня
Пользователь
 
Регистрация: 08.01.2007
Сообщений: 30
По умолчанию Работа с TImage-как установить длину массива TRGBTriple?

Работаю с TImage, определил массив
Код:
type
PRGBmap=^TRGBmap;
TRGBmap=array of TRGBTriple;
var
rgbmap:PRGBmap;
для метода
Код:
rgbmap:=Image1.Picture.Bitmap.Scanline[xi] //переменая цикла от 0 до ширина картинки-1
Само собой выдает ошибку, так как длина TRGBmap неопределена, потому, что картинки в программу грузятся динамически.
Так как же установить длину, если
Код:
SetLength(rgbmap,x)//x-ширина изображения
выдаёт ошибку о несовместимост типов?
Я не волшебник, я только учусь!

Последний раз редактировалось Саня; 04.08.2007 в 08:13.
Саня вне форума Ответить с цитированием
Старый 04.08.2007, 11:15   #2
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

rgbmap это не массив, а указатель на массив TRGBTriple.
А свойство Scanline как раз и возвращает указатель на запрошенную строку развертки изображения.

Так что установку длины массива нужно убрать, но добавить код для выделения динамической памяти под изображение (в этом случае только под одну строку развертки изображения, если вы не сохраняете в памяти всю картинку, а построчно обрабатываете):
Код:
GetMem(rgbmap, image1.picture.bitmap.Width);
перед циклом. И в конце не забыть ее освободить FreeMem(rgbmap);

И еще один нюанс. В цикле ты пробегаеш от 0 до длины-1, нужно до ширины-1. scanline возвращает строку, а не столбец.
Net вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать размер и длину песни Манжосов Денис :) Мультимедиа в Delphi 5 27.12.2011 03:23
TRGBArray и TRGBTriple Илья PHoeNiX Помощь студентам 1 09.06.2008 15:04
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
как найти длину последней подстроки в паскале Artem1987 Помощь студентам 1 27.12.2007 18:17
Работа с TImage Apocalypsyse Компоненты Delphi 2 12.02.2007 14:13