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

Вниз

Приложение зависает под 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
1-25740
-=[SDA]=-
2004-02-27 07:31
2004.03.09
Здравствуйте, подкинте плз примерчик вызова GetHostName...


11-25723
Dimaxx
2003-06-21 01:19
2004.03.09
Как сделать немодальную форму типа Lister у WindowsCommander а?


14-25913
XsID
2004-02-15 21:00
2004.03.09
Проблемма!!!


14-25903
Alex Konshin
2004-02-16 09:19
2004.03.09
Атака клонов


14-25896
Тимохов
2004-02-11 11:23
2004.03.09
Рихтер I