Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Внизпочему ошибка при загрузке в масив большого числа битмапов? Найти похожие ветки
← →
delphiForever (2007-09-04 17:50) [0]вот например код
n:=100;
for i:=0 to n do begin
arBm[i]:=TBitMap.Create;
arBm[i].LoadFromFile(IntToStr(i)+"file.bmp");
end;
в результате ошибка "Canvas not allow drawing". Практически n может быть больше или меньше, кажется вроде есть зависимость от железа.
← →
Ega23 © (2007-09-04 17:52) [1]А это точно bmp?
А может какой-нить альфа-канал присутствует?
← →
Dib@zol © (2007-09-04 17:57) [2]> [0] delphiForever (04.09.07 17:50)
В том то и дело, что памяти не хватает. По крайней мере у меня такое выдавалось лишь по этой причине.
← →
delphiForever (2007-09-04 18:12) [3]
> В том то и дело, что памяти не хватает
а если загрузить пару файлов большого размер получиться памяти нужно в несколько раз больше чем 100 маленьких файлов, а ошибка не вылетает?
И кажется уже не помню ошибка себя покажет даже если ничего не грузить, а просто в цикле попытаться после создания битмапа изменить его размеры
arBm[i].width:=1;
arBm[i].height:=1;
← →
umbra © (2007-09-04 18:12) [4]а где рисование в приведенном коде?
← →
delphiForever (2007-09-04 18:14) [5]
> а где рисование в приведенном коде?
рисовать уже не успеваеш...
← →
Dib@zol © (2007-09-04 18:15) [6]> [3] delphiForever (04.09.07 18:12)
Памяти не хватает не под сами битмапы, а под их хендлы в системе. потому и "доез нот аллов"...
← →
delphiForever (2007-09-04 18:19) [7]
> Памяти не хватает не под сами битмапы, а под их хендлы в
> системе. потому и "доез нот аллов"...
а разве хендл жрет много ресурсов
← →
Dib@zol © (2007-09-04 18:21) [8]Неа, просто в системе существует лимит хендлов.
← →
delphiForever (2007-09-04 18:25) [9]
> Неа, просто в системе существует лимит хендлов.
ну спасиба разрулил тему а то уже год спокойно спать не мог :)
← →
Инс © (2007-09-04 18:36) [10]
> delphiForever (04.09.07 17:50)
Вообще, телепаты из отпуска не вернулись еще, но подобная ошибка чаще всего возникает при огромном количестве gdi-объектов, как здесь
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=11868
или возможно вы обращаетесь к VCL из неосновного потока.
← →
Anatoly Podgoretsky © (2007-09-04 19:44) [11]> delphiForever (04.09.2007 17:50:00) [0]
Ошибка не здесь
← →
delphiForever (2007-09-04 19:48) [12]
> Anatoly Podgoretsky © (04.09.07 19:44) [11]
> Ошибка не здесь
тогда что?
← →
Loginov Dmitry © (2007-09-04 21:14) [13]> Ошибка не здесь
+1
100 - это далеко не лимит для битмаповских хэндлов. В Win98 лимит около 300 хэндлов на процесс. В WinXP - около 9000 на процесс. А 100 - это мелочь. Скорее всего, что-нить с потоками перемудрил...
← →
delphiForever (2007-09-04 21:38) [14]
> 100
100 ето так в переносном смысле, что бы было понятно проблему.
> В Win98 лимит около 300 хэндлов на процесс. В WinXP - около
> 9000 на процесс. А 100 - это мелочь
в принцыпе согласен в Xp работает дольше, у меня:
Win98 цыкл летел где-то на 170 кругу и выше
WinXp где-то около 600-1000
> Скорее всего, что-нить с потоками перемудрил...
потоков вообще нет новый проект, форма и громадная кнопка с кодом:n:=100;
for i:=0 to n do begin
arBm[i]:=TBitMap.Create;
arBm[i].LoadFromFile(IntToStr(i)+"file.bmp");
end;
← →
Anatoly Podgoretsky © (2007-09-04 21:55) [15]> delphiForever (04.09.2007 21:38:14) [14]
Этот код не откомпилируется, значит это не весь код.
← →
delphiForever (2007-09-04 23:09) [16]
> Этот код не откомпилируется, значит это не весь код.
ну вот весь код, прям чудеса, проверил все без ошибок, раньше таким самим способом пытался загрузить картинки для анимации, правда поменьше и в результате получал ошибку примерно один раз с трех
var
Form1: TForm1;
arBm:array of TBitMap;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
SetLength(arBm,0);
for i:=0 to 7050 do begin
SetLength(arBm,Length(arBm)+1);
arBm[i]:=TBitMap.Create;
arBm[i].LoadFromFile("2.bmp");
form1.Caption:=InttoStr(i);
form1.Canvas.Draw(0,0,arBm[i]);
end;
end;
← →
Anatoly Podgoretsky © (2007-09-04 23:15) [17]О как подрасло, сразу в 70 раз.
А вот размеры битмапа остались загадкой.
Уже и рисование появилось.
И сколько памяти тратится по диспетчеру задач?
Прямо партизан какой то.
← →
delphiForever (2007-09-04 23:19) [18]
> А вот размеры битмапа остались загадкой.
85*120
> Прямо партизан какой то.
ето от дедушки
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.059 c