Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
1-1097564107
DenKov
2004-10-12 10:55
2004.10.24
Чтение файла, занятого другим процессом


1-1097276047
saNat
2004-10-09 02:54
2004.10.24
StringGrid


14-1096570040
Abuzer
2004-09-30 22:47
2004.10.24
Оцените


3-1096208788
eugene32
2004-09-26 18:26
2004.10.24
Вопрос про TDataSet и TQuery


3-1096009540
Леха
2004-09-24 11:05
2004.10.24
Как изменить значение всех строк с пом. sql





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский