Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическая загрузка и выгрузка картинок 
:(
    Опции темы
Gnusss
  Дата 10.5.2005, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



Привет всем!

Есть у меня форма и при её Показе я загружаю из DLL-ки картинки:
Код

procedure TForm2.FormShow(Sender: TObject);
var
 I: integer;
 PNG: TPNGObject;
 ImageLib: Cardinal;
begin
 ImageLib:= LoadLibrary(pChar(GetMyDir+FileImageLib));
 PNG:= TPNGObject.Create;
 PNG.LoadFromResourceName(ImageLib,'C_SIDEBACK2');
 Image24.Picture.Graphic:= PNG;
 PNG:= TPNGObject.Create;
 PNG.LoadFromResourceName(ImageLib,'C_SIDEBACK1');
 Image5.Picture.Graphic:= PNG;
...
End;
А при скрытии её а пытаюсь их удалить(Мне нужно удалить только картинки не Форму):
Код

procedure TConfig.FreeLoadedPic;
var
 I: integer;
begin
 Image24.Picture.Graphic.Free;
 Image4.Picture.Graphic.Free;
...
End;
Но при следующем(очередном) показе формы выскакивают ошибки. Как я понял это из-за неправильного удаления картинок.
Как мне лучше реализовать загрузку и выгрузку эти картинок.
Цель всего этого: Чтобы картинки не занимали память пока форма не видна.

Заранее спасибо!
PM MAIL   Вверх
Yanis
Дата 10.5.2005, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Попробуй Image24.Picture.Free


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Poseidon
Дата 10.5.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код
procedure TConfig.FreeLoadedPic;
var
 I: integer;
begin
 Image24.Picture:= nil;
 Image4.Picture:= nil;
...
End;



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Gnusss
Дата 10.5.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



Цитата(Yanis @ 10.5.2005, 13:03)
Image24.Picture.Free

Не помогает!

Цитата(Poseidon @ 10.5.2005, 13:10)
Image24.Picture:= nil;

Это только удаляет указать на Picture но не отчищает память, после нескольких показов и скриыть формы прога стала есть 50> метров памяти
PM MAIL   Вверх
Yanis
Дата 10.5.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Надо очищать TPNGObject и Image, а ты только Image освобождаешь.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Gnusss
Дата 10.5.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



Мне нужно удалить из памети только катринку.
Сам компонент мне удалять не надо.
PM MAIL   Вверх
Yanis
Дата 10.5.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



После того как ты создаешь объект ты загружаешь в него рисунок вот такой строчкой:
Код

PNG.LoadFromResourceName(ImageLib,'C_SIDEBACK2');
причём после этого ты ещё раз содаёшь объект (зачем???) Нужно один раз содать объект TPNGObject, загружать картинки, а потом в конце процедуры освобождать память из под него:
Код

var
 I: integer;
 PNG: TPNGObject;
 ImageLib: Cardinal;
begin
 ImageLib:= LoadLibrary(pChar(GetMyDir+FileImageLib));
 PNG:= TPNGObject.Create;
 { ... }
 PNG.LoadFromResourceName(ImageLib,'C_SIDEBACK2');
 Image24.Picture.Graphic:= PNG;
 PNG.LoadFromResourceName(ImageLib,'C_SIDEBACK1');
 Image5.Picture.Graphic:= PNG;
 { ... }
  PNG.Free;



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Gnusss
Дата 10.5.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



to Yanis Про загрузку спасибо. А что делать с выгрузкой?
PM MAIL   Вверх
Yanis
Дата 10.5.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Gnusss @ 10.5.2005, 15:06)
А что делать с выгрузкой?

Если ты при закрытии своей формы TConfig используешь Free, то ничего не надо делать больше.
А вообще ImageXXX.Picture.Assign(nil);

Это сообщение отредактировал(а) Yanis - 10.5.2005, 15:35


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Gnusss
Дата 10.5.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 19.1.2005

Репутация: нет
Всего: нет



to Yanis Большое спасибо.
Цитата(Yanis @ 10.5.2005, 15:32)
ImageXXX.Picture.Assign(nil);

Работает и Отчищает память.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.