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

Вниз

Exception: Not enough storage is available to process this ..   Найти похожие ветки 

 
Defunct ©   (2004-09-30 02:41) [0]

Программа (MDI) работает с множеством файлов (векторных изображений), каждый файл редактируется в отдельной MDIChild форме, прога вываливается с сабжевым экcепшином, при попытке открыть или создать очередной файл.

вылетает при создании рабочей области с исключением "Not enough storage is available to process this command"

Код на котором появляется исключение простой.. Не могу понять как решить проблему..

TDrawBox = class(TPaintBox)
...

Constructor TDrawBox.Create(AOwner: TComponent);
Begin
 inherited Create(AOwner);
 ResetMap;

 TextBoxList := TTextBoxList.Create;
 FShadowLength := 20;

 ControlStyle := ControlStyle + [csReplicatable];
 FrameShown := False;
 FrameCanBeShown := False;
 FUpdating := False;

 BText := Graphics.TBitmap.Create;
 BText.Canvas.Font.Name := "Courier New CE";

 BFig  := Graphics.TBitmap.Create;
 Picture := Graphics.TBitmap.Create;
 Picture.Width := Screen.Width;
 Picture.Height := Screen.Height; // <-- вылетает на этой строчке  
 ...
End;


Пробовал уменьшить размер рабочей области (Screen.Width-xxx, screen.height - yyy), позволило создать на 1 файл больше, потом вылетело с тем же исключением.. Ограничение на кол-во файлов поставить не могу, пользователь сам определяет сколько должно быть открыто документов. (да и вылетает на смешном количестве - 5 открытых файлов и приехали..)

Можно ли как-то выйти из сложившейся ситуации?


 
Defunct ©   (2004-09-30 06:21) [1]

Вот зараза... вроде бы XP...
создаю новых форм, на 6-й выскакивает EOutOfResources..Млин, 5 несчастных Bitmap"ов.. TaskManager показывает, что процесс занимает всего ~5Mb..

EOutOfResources is raised when an application attempts to create a Windows or widget handle and there are no more handles to allocate.

(перезагружал комп не раз, так же история)

Это как-то лечится?


 
ЮЮ ©   (2004-09-30 08:26) [2]

>процесс занимает всего ~5Mb
>and there are no more handles to allocate

память и ресурсы - вешь разная. Очевидно, имеет место дикая утечка ресурсов, причем не в указанном месте, а ,например, в TDrawBox.Paint


 
Defunct ©   (2004-09-30 09:52) [3]

> ЮЮ ©   (30.09.04 08:26) [2]

Если открыто 5 форм, одну из них закрываю, потом создаю опять и все ок. И так хоть 100 раз подряд, т.е. утечки вроде бы и нет..

Но вот когда пытаюсь создать шестую форму - пиши пропало.. EOutOfResources на создании области битмапа..


 
Defunct ©   (2004-09-30 09:55) [4]

перекрытый Paint выглядит так:

procedure TDrawBox.Paint;
begin
 If (Picture.Width<>Width) Or (Picture.Height<>Height) Then
 Begin
   Try
     Picture.Width := Width;
     Picture.Height := Height;
   Except
     On Exception:EOutOfResources do
     ShowMessage(emOutOfResources);
   End;
   RePaint;
 End Else
 Begin
   Canv.Font := Font;
   Canv.Brush.Color := Color;
   if csDesigning in ComponentState then
     with Canv do
     begin
       Pen.Style := psDash;
       Brush.Style := bsClear;
       Rectangle(0, 0, Width, Height);
     end;

   Canvas.Draw(0,0, Picture);
 End;
end;


 
Defunct ©   (2004-10-01 02:43) [5]

UP

может быть есть иной способ формирования картинки без использования TBitmap?


 
ЮЮ ©   (2004-10-01 04:21) [6]

Попробуй device independent bitmap (есть open source библиотеки Graphics32 и FastDIB)


 
Defunct ©   (2004-10-06 16:35) [7]

> ЮЮ ©   (01.10.04 04:21) [6]

Эх, посмотрел FastDIB и сделал так, TBitmap заменил на TMemoryStream ;)



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
4-1095509257
TopT
2004-09-18 16:07
2004.10.24
Как блокировать выключение экрана?


1-1097474516
aleshap
2004-10-11 10:01
2004.10.24
Как определить какие свойства изменились


1-1097231872
mRodion
2004-10-08 14:37
2004.10.24
Еще по поводу Tlist. Сортировка.


4-1095749203
Users
2004-09-21 10:46
2004.10.24
Редакторы RC (аля Resource Workshop )


6-1092814512
Dmitry_K
2004-08-18 11:35
2004.10.24
Где можно найти хелп по iphlpapi