Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: CL | DM;

Вниз

Ресурсы Bitmap в W98SE ?   Найти похожие ветки 

 
kaif ©   (2003-03-11 03:07) [0]

У меня очень большая программа.
Сегодня при установке у клиента на разных компьютерах обнаружилось, что из под 98SE она не запускается, а из под W2000 и XP запускается.
Под 98SE выскакивает ошибка "Недостаточно памяти для запуска приложения".
Подробное исследование проблемы показало, что происходит это из-за ресурсов картинок. У меня имеется 600 bitmap-ов, в основном это 24x24 16-цветные пиктограммки компонентов. Включаются в exe-файл на стадии компиляции из всяких *.dcr файлов...
При кол-ве bitmap-ов 450 программа нормально работает под 98SE.
При увеличении числа картинок до 570 в некоторых ListView они перестают отображаться. При увеличении картинок в этих ресурсах до 600 система говорит, что недостаточно памяти.
Никаких таких глюков под W2000 и XP не наблюдается...
Что делать?
Может, достаточно заменить версию какой-нибудь comctrl.dll или все же нужно сокращать кол-во картинок?
Кто-нибудь сталкивался с этой проблемой?
Может, выделить картинки в одельную dll? Может это помочь или нет? И как их оттуда потом загружать? Обычными функциями типа loadResource и т.п. или как-то иначе?
Буду рад услышать ваше мнение.


 
MBo ©   (2003-03-11 06:20) [1]

битмапы занимают ценные ресурсы GDI, которых в 98 несколько меньше, чем в 2K. Вероятно, не все картинки нужны одновременно, и их можно подгружать по мере надобности, освобождая уже ненужные ресурсы.


 
Anatoly Podgoretsky ©   (2003-03-11 09:40) [2]

Уменьшать не стоит, экомнее расходовать да, а длл не поможет, какая разница где лежит ресуср в ресурсной дли или в ехе, и в том и другом случае есть не просит, пока не попросишь.


 
kaif ©   (2003-03-11 11:26) [3]

В программе повсеместно используются именованные ресурсы. Существует ли возможность по мере подгрузки ресурсов во время исполнения (runtime) их именовать, чтобы не менять остальной код или это невозможно и придется их нумеровать и хранить в каких-нибудь TMemoryStream? (В ImageList хранить я тоже боюсь, потому то я замечал, что в него больше 256 картинок не лезет без глюков, и вообще я уже боюсь всех недокументированных ограничений W98SE...)


 
kaif ©   (2003-03-11 16:44) [4]

Каков формат *.dcr ?
Предположим, я загружу *.dcr в FileStream или MemoryStream.
Могу ли я выдрать оттуда имена ресурсов типа TBitmap и составить их список с offset-ами, чтобы потом по имени находить offset и затем считывать сам bitmap?
(Предположим, я не буду компилировать EXE с этими ресурсами, а поставлю их отдельно прямо в *dcr-виде) Хотелось бы иметь возможность загрузить эти ресурсы и обращаться к ним по имени, а переделывать формат *dcr в другой... опять нужно знать, как он устроен.
Может кто-нибудь дать ссылку?
Или, может, засунуть их все в dll, которую не загружать, а использовать поиск ресурсов в ней наподобие того, как это делает Resexplorer из delphi\Demo ?


 
kaif ©   (2003-03-12 04:05) [5]

В общем... :((
Сделал dll, напихал туда все {$R *.DCR}
Dll не стартует. Это просто контейнер.
Затем содрал кусок из Resexplor (пример в Demo), запихал список ресурсов в StringList, нахожу их там по имени, и гружу ресурсы runtime по мере надобности.
Но не нравится мне это все...
Неаккуратненько как-то.



Страницы: 1 вся ветка

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-76304
denis24
2003-02-27 14:22
2003.03.24
sql запрос


7-76703
Beel
2003-01-26 18:42
2003.03.24
Как запретить запуск программ в Windows


1-76437
NEEDHelp
2003-03-11 23:39
2003.03.24
Delphi ERROR


1-76428
yaric
2003-03-11 20:51
2003.03.24
Освобождение ресурсов


8-76530
Ssergy
2002-11-07 18:32
2003.03.24
Помогите с расчетом координат.