Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2009, 23:47   #1
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию Массив TBitmap, "Недостаточно памяти для обработки команды"

У меня в программе заполняется массив из TBitMap размером 1226х1742

Когда их набирается штук 30, выводится такое сообщение:

Цитата:
---------------------------
ag_qwerty
---------------------------
Недостаточно памяти для обработки команды.


---------------------------
ОК
---------------------------
И генерится исключение EOutOfResources

Хотя по памяти программа не больше 20 метров.
Правда файл подкачки раздувается на 300 метров больше чем обычно.

А надо чтоб работало. Можно обойтись без сохранения на диск временных файлов?

Последний раз редактировалось Роман Радер; 01.04.2009 в 23:54.
Роман Радер вне форума Ответить с цитированием
Старый 02.04.2009, 00:03   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
TBitMap размером 1226х1742
1226*1742*24/8*30=192 212 280

Их обязательно нужно столько хранить? Кстати, размер какой-то странный...


P.S.
Сделал проэкт заполняющий (в цикле) "массив из TBitMap размером 1226х1742" - выдаёт то же самое на создании 324-й штуки...
А в "Диспетчере задач" говорит, что прога ест 2 031 052 КБ памяти.....
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 02.04.2009 в 00:28.
DomiNick вне форума Ответить с цитированием
Старый 02.04.2009, 17:31   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Похоже у тебя действительно заканчивается память. Отсюда и ошибка. Попробовал у себя, все нормально, дошел до сорока штук (сделал по нажатию кнопки), дальше не стал, памяти программа при этом стала жрать 250 мб, с каждым битмапом прирост ~6.2 мб. Естественно наступит момент когда память закончится, у меня виртуальной 2 гб, т.е. еще штук 150 можно создать.

Может как-то можно оптимизировать алгоритм и лишние освобождать? Вернее все-таки нужно, а то это не дело
Ну и всегда можно увеличить файл подкачки.

P/S Попробовал по таймеру, раз в секунду, также все нормально, до 150 штук программа все еще работала, расход памяти перевалил за гигабайт, дальше я выключил, что интересно где-то после 35-й штуки и дальше при создании каждого последующего, система начала перераспределять память отбирая ее у других программ (физической памяти в системе 512 мб).
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 02.04.2009 в 17:49.
mutabor вне форума Ответить с цитированием
Старый 04.04.2009, 14:40   #4
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Мда, интересно.
Наверное, придется для хранения использовать TJpegImage с компрессией 100
Хранить надо ВСЕ.
Роман Радер вне форума Ответить с цитированием
Старый 04.04.2009, 15:41   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Может их во временную папку сохранять..? А при закрытии очищать всё...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 05.04.2009, 18:14   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Хранить такие объемы в памяти нерационально.Лучше держать в файле, при необходимости считывать, обрабатывать и опять записывать в файл.В таком случае могут быть только потери в быстродействии и то не думаю ощутимые.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43
Thread creation error - Недостаточно памяти RealSwift Общие вопросы Delphi 1 06.07.2008 12:27
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03