Непонятна логика работы Image

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Непонятна логика работы Image

Сообщение veresk » 04.04.2012 13:34:07

Может я конечно и совсем тупой, не спорю, но кажется что-то не так.

Объявляю переменную P:TPicture. Открываю через диалог катинку:
Код: Выделить всё
  If OpenPictureDialog1.Execute = true then
     begin
          Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
     end;


Вытаскиваю картинку в переменную:
P:= Image1.Picture;

Всё, в принципе, работает. Но как только очищаю\заменяю Image.Picture - убивается и переменная P. Такое ощущение, что P - только ссылка на Image1.Picture, а не копия. А мне надо копию держать в памяти, да не одну.

А вот ситуация P.Picture.LoadFromFile(OpenPictureDialog1.FileName); не отрабатывает, падает. Почему, спрашивается? Хотя при компиляции никаких ошибок вообще не выдаёт.
veresk
новенький
 
Сообщения: 48
Зарегистрирован: 31.01.2012 12:23:32

Re: Непонятна логика работы Image

Сообщение SSerge » 04.04.2012 15:39:10

TPicture это и есть указатель. Переменная любого класса - это указатель. Статические экземпляры классов синтаксисом Object Pascal не позволены.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Непонятна логика работы Image

Сообщение veresk » 04.04.2012 22:03:11

А в какую тогда переменную можно замутить для сохранения картинки? Или вообще только поток?
veresk
новенький
 
Сообщения: 48
Зарегистрирован: 31.01.2012 12:23:32

Re: Непонятна логика работы Image

Сообщение SSerge » 05.04.2012 04:02:45

Для хранения коллекции картинок imho есть список TPictureList.

Ну и содержимое класса формально никто не запрещает копировать, только в отличие от C++ неявных конструкторов копирования в паскалях не бывает, то есть нельзя сотворить

TClass *a=new TClass(...);
TClass b=*a;

Поэтому ищется что-то типа конструктора Create с аргументом, являющимся экземпляром этого же класса, либо какая-нибудь функция (по смысловому содержанию) типа CopyTo, принадлежащая копируемому классу.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Непонятна логика работы Image

Сообщение veresk » 05.04.2012 10:52:51

SSerge писал(а):Для хранения коллекции картинок imho есть список TPictureList.


Да, меня сия конструкция полностью удовлетворяет. Именно то, что надо, точнее не бывает. Спасибо, выручил нуба!
veresk
новенький
 
Сообщения: 48
Зарегистрирован: 31.01.2012 12:23:32


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 237

Рейтинг@Mail.ru
cron