Форум: "Основная";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
ВнизПриложение зависает под win98 при выполнении bitmap.loadfromfile Найти похожие ветки
← →
Сергей Петров (2004-02-26 02:29) [0]Собственно, сабж.
Так происходит с двумя абсолютно разными проектами.
Зависает оно не на каждом loadfromfile, на третьем или четвертом, но всегда на одном и том же.
Симптомы - мышка ездит, все остальное мертво.
То же самое происходит и на других компьютерах.
Под winxp все хорошо.
Виснет и при stepbystep и при запуске вне ide.
В чем может быть дело.
← →
_DB_ (2004-02-26 02:34) [1]Код-та приведи хоть кусок
← →
Сергей Петров (2004-02-26 02:37) [2]Вот. Если это дело закомментить - все работает. Виснет то ли на третьем loadfromfile, то ли на четвертом.
mouseoff.loadfromfile(extractfilepath(application.exename)+"\res\mouseoff.bmp");
mouseoff.TransparentMode := tmFixed;
mouseoff.TransparentColor := clWhite;
mouseoff.Transparent := true;
mouseon.loadfromfile(extractfilepath(application.exename)+"\res\mouseon.bmp");
mouseon.TransparentMode := tmFixed;
mouseon.TransparentColor := clWhite;
mouseon.Transparent := true;
mousesel.loadfromfile(extractfilepath(application.exename)+"\res\mousesel.bmp");
mousesel.TransparentMode := tmFixed;
mousesel.TransparentColor := clWhite;
mousesel.Transparent := true;
mouseon2.loadfromfile(extractfilepath(application.exename)+"\res\mouseon2.bmp");
mouseon2.Transparent := true;
mouseon2.TransparentColor := clWhite;
mouseon2.TransparentMode := tmFixed;
mouseoff2.loadfromfile(extractfilepath(application.exename)+"\res\mouseoff2.bmp");
mouseoff2.Transparent := true;
mouseoff2.TransparentColor := clWhite;
mouseoff2.TransparentMode := tmFixed;
mousesel2.loadfromfile(extractfilepath(application.exename)+"\res\mousesel2.bmp");
mousesel2.Transparent := true;
mousesel2.TransparentColor := clWhite;
mousesel2.TransparentMode := tmFixed;
← →
Сергей Петров (2004-02-26 02:43) [3]Поменял везде extractfilepath(application.exename) на переменную, в которую заранее его положил.
Виснуть перестало. Зато теперь безостановочно ругается на нехватку памяти и вылетает с десятком Access Violations.
Куда память-то уходит, если это самое начало инициализации программы?
← →
_DB_ (2004-02-26 02:45) [4]че такое mouseon и дркгие, че за переменная?
← →
Сергей Петров (2004-02-26 02:48) [5]tbitmap.
Теперь все уже определенно - после загрузки около 1.5 мегабайт bmpшек - на очередном loadfromfile вылезает что-то вроде "нехватает памяти для выполнения действия".
← →
Defunct (2004-02-26 02:59) [6]Сергей Петров (26.02.04 02:48) [5]
Скорее нехватка ресурсов. Есть там такое, побороть не удалось. До сих пор есть проект который на win98 работает на-половину. Т.е. в XP загружается сколько угодно Bitmap а Win98/Me только 150-160 шт. как раз примерно на 1.5Mb и вылетает.
С моем стороны, могу только предложить определять версию винды, и если это Win 9x/ME - уменьшить объем картинок, или сократить их число.
← →
_DB_ (2004-02-26 03:05) [7]хуй знает все работает.
не поленись закинь-ка весь код.
← →
_DB_ (2004-02-26 03:15) [8]давай весь код
← →
Сергей Петров (2004-02-26 03:16) [9]понятно. спасибо. попробую поворочать с картинками...
Проблема главная в том, что там большой бекграунд для формы. Как бы его уменьшить?
← →
Сергей Петров (2004-02-26 03:16) [10]_DB_: Понятно ведь уже в чем дело.. Надо думать, как картинки уменьшить..
← →
_DB_ (2004-02-26 03:17) [11]ну как хочешь
← →
_DB_ (2004-02-26 03:19) [12]bmp ты не уменьшишь сам знаешь, если поверх никаких других картинок с прозрачным фоном лепить не будешь, залей jpg, и вобще объясни хотябы в двух словах че надо сделать, трудно понять, может есть более грамотное решение.
← →
Сергей Петров (2004-02-26 03:38) [13]Объясняю.
Судя по всему моя программа зависает под win98 из-за того, что ей не хватает памяти под хранение картинок.
Главный трабл в том, что есть бекграунд формы, который по onpaint рисуется. Он занимает 1.5мб. Уменьшить не получится.
jpg из него тоже делать смысла нет, все равно в bitmap переделывать придется.
← →
_DB_ (2004-02-26 04:07) [14]Если я правильно все понял, вот тебе код:
procedure TForm1.FormPaint(Sender: TObject);
var
MyBitmap:TBitmap;
begin
MyBitmap:=TBitmap.Create;
MyBitmap.LoadFromFile("f:\1.bmp");
Canvas.Draw(0,0,MyBitmap);
end;
Так вот 1.bmp это в моем случае рисунок в 20 мегабайт
все происходит мгновенно.
← →
Сергей Петров (2004-02-26 04:18) [15]Я вроде бы разобрался. Действительно, дело не размере (или не столько в размере).
Все прекрасно работает, если transparent = false.
У меня есть несколько bitmaps с включенной прозрачностью. Под XP - все супер, под 98 - моментально съедает все ресурсы. Только что отключив прозрачность добился стабильной работы. Включил назад - все похерилось.
Есть идеи как это исправить? Трабл в том, что позрачность нужна... Хотя если нельзя - справлюсь и без нее.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c