Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2010, 12:36   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию "Недостаточно памяти для обработки команды..."

Проблема видна из заголовка.
Дело, собственно, вот в чём.
Вот код:
Код:
procedure TForm1.FormPaint(Sender: TObject);
var i,j,k:integer;
begin
     X:=0;Y:=450;
     TexturBuf:=TBitmap.Create;
     TexturBuf.Width:=640;
     TexturBuf.Height:=480;
     TexturBuf.Canvas.Rectangle(0,0,640,480);
     while x<480 do
     begin
          Spline:=TBitmap.Create;
          Spline.LoadFromFile('e:\pics\1.bmp');
          TexturBuf.Canvas.Draw(X,Y,Spline);
          X:=X+20;
          Spline.Free;
     end;
    Form1.Image1.Canvas.Draw(0,0,TexturBuf);
end;
Не понимаю, как может быть нехватка памяти если картинка весит 4 кб!
P.S. Попробовал сделать for i:=1 to 3 do и далее весь тот цикл, но пишет тоже самое....
_-Re@l-_ вне форума Ответить с цитированием
Старый 19.06.2010, 12:45   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Столько (учитывая частоту OnPaint) TexturBuf = TBitmap.Create, а где Free или Destroy? И читать файл в OnPaint, мягко говоря, нехорошо.
Somebody вне форума Ответить с цитированием
Старый 19.06.2010, 12:48   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Столько TexturBuf = TBitmap.Create
Таковых всего одна
Много лишь
Код:
Spline:=TBitmap.Create;
_-Re@l-_ вне форума Ответить с цитированием
Старый 19.06.2010, 17:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
     TexturBuf:=TBitmap.Create;
итак, память выделяется при каждом OnPaint.
Код:
procedure TForm1.FormPaint(Sender: TObject);
begin
 Form1.Image1.Canvas.Draw(0,0,TexturBuf);
end;

procedure TForm1.FormCreate(Sender: TObject);
var Spline:TBitMap
     x,y:integer;
begin
 X:=0;
 Y:=450;
 TexturBuf:=TBitmap.Create;
 TexturBuf.Width:=640;
 TexturBuf.Height:=480;
 TexturBuf.Canvas.Rectangle(0,0,640,480);
 Spline:=TBitmap.Create;
 Spline.LoadFromFile('e:\pics\1.bmp');
 while x<480 do
 begin
  TexturBuf.Canvas.Draw(X,Y,Spline);
  X:=X+20;
 end;
 Spline.Free;
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
 TexturBuf.Free;
end;
оптимизировать учитесь
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.06.2010, 17:51   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ох как... Я и забыл про
Цитата:
итак, память выделяется при каждом OnPaint.
А ведь знал..
_-Re@l-_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Недостаточно памяти для отображения Lukker Microsoft Office Word 4 11.04.2010 08:07
Недостаточно памяти для обработки команды TBitMap finder_sl Мультимедиа в Delphi 12 03.03.2010 20:40
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Массив TBitmap, "Недостаточно памяти для обработки команды" Роман Радер Мультимедиа в Delphi 5 05.04.2009 18:14