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

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

Удаление объекта после Assign


@!!ex ©   (2009-05-23 13:13:00) 

Загружаю TJPEGImage после чего делаю TBitMap.Assign(TJPEGImage) и TBitMap далее используется.
Вопрос:
Можно ли после этого удалить TJPEGIMage?


DVM   (2009-05-25 15:25:00) [1]


> @!!ex ©   (25.05.09 14:50) [11]

вот тут исходник модуля:

http://www.delphikingdom.com/asp/answer.asp?IDAnswer=36400


DVM   (2009-05-25 15:20:00) [2]


> @!!ex ©   (25.05.09 14:50) [11]


> У TJPEGImage нет исходников.

Не у TJPEGImage, а у модуля jpeg. Да и они есть, если поискать, только не в составе Delphi.


MBo   (2009-05-25 15:03:00) [3]

>@!!ex ©   (23.05.09 13:24) [2]
>Assign тока объекты ссылки копирует...

В справке же сказано:

The assignment operator makes Destination reference the same object as Source, whereas the Assign method copies the contents of the object referenced by Source into the object referenced by Destination.

И твоя ссылка в [4] в общем-то то же самое перепевает.


@!!ex   (2009-05-25 14:50:00) [4]

> [9] Игорь Шевченко ©   (25.05.09 14:03)
> а исходники стер, чтобы враг не подсмотрел ?

У TJPEGImage нет исходников. Во всяком случе в Explorer'e


Ega23   (2009-05-25 14:18:00) [5]


> Загружаю TJPEGImage после чего делаю TBitMap.Assign(TJPEGImage)
> и TBitMap далее используется.
> Вопрос:
> Можно ли после этого удалить TJPEGIMage?


В данной ситуации - можно

var
 bmp : TBitmap;
 jpg : TJPEGImage;
begin
 bmp := TBitmap.Create;
 try
   jpg := TJPEGImage.Create;
   try
      jpg.LoadFrom.....  ;
      bmp.Assign(jpg);
   finally
     jpg.Free;
   end;

   // работаем с bmp
 finally
   bmp.Free;
 end;
end;


Игорь Шевченко   (2009-05-25 14:03:00) [6]


> В том то и дело, что я не доконца понимаю этот механизм


а исходники стер, чтобы враг не подсмотрел ?


@!!ex   (2009-05-25 14:00:00) [7]

> [7] clickmaker ©   (25.05.09 11:55)
> сам-то как думаешь: копирование ссылки достаточно, чтобы
> превратить jpeg в bitmap?

Я думаю что нельзя. :)
В том то и дело, что я не доконца понимаю этот механизм, поэтому и решил спросить, чтобы избежать АВ и утечек памяти.

P.S.
ДОшел до стадии тестирования. Вроде уничтожение JPEG не сказывается отрицательно и АВ не вызывает.


clickmaker   (2009-05-25 11:55:00) [8]

> Assign тока объекты ссылки копирует

сам-то как думаешь: копирование ссылки достаточно, чтобы превратить jpeg в bitmap?


Игорь Шевченко   (2009-05-23 14:50:00) [9]


> Можно ли после этого удалить TJPEGIMage?


можно


@!!ex   (2009-05-23 13:45:00) [10]

> [3] sniknik ©   (23.05.09 13:36)
> сомневаюсь...

http://www.delphisources.ru/pages/faq/base/method_assign.html


@!!ex   (2009-05-23 13:45:00) [11]

> [3] sniknik ©   (23.05.09 13:36)
> удали и посмотришь, AV есть? или еще лучше очисть его...
> если ссылка то и TBitMap будет пустым.

удали и посмотришь, AV есть? или еще лучше очисть его... если ссылка то и TBitMap будет пустым.

Я не могу сейчас проверить. Пишу болванку, которую можно будет только позднее протестировать.


sniknik   (2009-05-23 13:36:00) [12]

> Assign тока объекты ссылки копирует...
сомневаюсь...

> Вот и не понятно, толи можно толи нельзя...
удали и посмотришь, AV есть? или еще лучше очисть его... если ссылка то и TBitMap будет пустым.


@!!ex   (2009-05-23 13:24:00) [13]

> [1] sniknik ©   (23.05.09 13:23)

Assign тока объекты ссылки копирует... Вот и не понятно, толи можно толи нельзя...


sniknik   (2009-05-23 13:23:00) [14]

а чего нет? assign это же не присвоение указателя/обьекта это копирование его содержимого. (для гарантии посмотреть конкретную реализацию у TBitMap)


Наверх

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