Показать сообщение отдельно
Старый 16.06.2008, 03:52   #5
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: 2 вопроса по MP

1. Чистить память пусть косвенно, но можно. Допустим, тебе нужно очистить оперативную память от ненужных картинок img1 и img2. При объявлении переменных сразу объявляешь не 2, а 3 картинки примерно так:

Var img1, img2, spacer: image;

Как известно, картинки нужно же ещё и загружать примерно так:

img1:=LoadImage('/image.png'); img2:=LoadImage('/fon.png');

Заметь, картинка spacer как бы не загружена, то есть фактически она равна null (указывает на несуществующую картику). Тогда для очистки памяти достаточно будет написать пару операторов:

img1:=spacer; img2:=spacer;

И всё. Через какое-то время начнет работать Сборщик Мусора (aka Garbage Collector), он и почистит память от неиспользуемых картинок т.к. они в памяти есть, но ни одна из переменных на них не ссылаются.
Для ускорения вызова Сборщика Мусора нужно вызвать метод gc(). Правда делать это можно только из Java, а из MIDlet Pascal пока никак. Даже дополнительной библиотеки для работы со Сборщиком Мусора я так и не обнаружил. Досадное недоразумение. Может, со временем появится? Писать там строк 5 всего.

Если картинка используется только один раз (например, заставка), то её лучше в переменные и не загружать:

DrawImage(LoadImage('/logo.png'), 0, 0); Repaint; Delay(1000);

2. Можно. Правда пока только для массивов строк. Есть такая библиотека Lib_vdata называется. Там можно добавлять текстовые строки в массив и при этом он будет автоматически расширяться. Очень удобно при чтении названий файлов в какой-нибудь директории когда не знаешь толком сколько же там этих файлов.

Последний раз редактировалось odd, 16.06.2008 в 08:43.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Romanzes (16.06.2008)