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