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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 23:11   #1
Pound
Пользователь
 
Регистрация: 28.11.2009
Сообщений: 14
По умолчанию

Пытаюсь записать jpeg через Image в DBGrid, возникает ошибка BDE Error $000F (Ошибка ПРОЦЕССОРА БАЗ ДАННЫХ : буферный менеджер исчерпал память). Таблица в Paradox7, поле BLOB (Graphic). По науке размер поля до 240 байт, остальной кусок в каком-то другом файле, думаю собака зарыта где-то здесь, что за файл, как создать? Помогите кто чем может, заранее благодарен.

Вот кусочек моего кода:
Код:
...
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
if Assigned(Image1.Picture.Graphic) then
begin
gp:=TJPEGImage.Create;
try
memSt:=TMemoryStream.Create;
try
gp.Assign(Image1.Picture.Graphic);
gp.SaveToStream(memSt);
memSt.Position:=0;
Table1.Edit;
TBlobField(DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Field).LoadFromStream(memSt);
 Table1.Post;
finally
memSt.Free;
end;
finally
gp.Free;
end;
end;
end;

end;

Последний раз редактировалось mihali4; 29.11.2009 в 23:44.
Pound вне форума Ответить с цитированием
Старый 29.11.2009, 23:52   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Занесение изображения в TImage и в БД:

Код:
procedure TfmMain.btnOpenClick(Sender: TObject);
var
  S: TStream;
begin
  if OpenDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenDialog1.FileName);
    ADODataSet1.Edit;
    S := ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('GRAPHIC'), bmWrite);
    try
      Image1.Picture.Graphic.SaveToStream(S);
    finally
      S.Free;
      ADODataSet1.Post;
    end;
  end;
end;
mihali4 вне форума Ответить с цитированием
Старый 11.01.2011, 18:37   #3
al_temir
Новичок
Джуниор
 
Регистрация: 11.01.2011
Сообщений: 1
Восклицание

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Занесение изображения в TImage и в БД:

Код:
procedure TfmMain.btnOpenClick(Sender: TObject);
var
  S: TStream;
begin
  if OpenDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenDialog1.FileName);
    ADODataSet1.Edit;
    S := ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('GRAPHIC'), bmWrite);
    try
      Image1.Picture.Graphic.SaveToStream(S);
    finally
      S.Free;
      ADODataSet1.Post;
    end;
  end;
end;


извините можете объяснить bmWrite?
al_temir вне форума Ответить с цитированием
Старый 11.01.2011, 18:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Это значит что поток, созданный CreateBlobStream может использоваться только для записи. Если попытаться из него считать возникнет ошибка (скорее всего).
Впрочем ты бы мог в хелпе провентилировать этот метод.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не хватает памяти Dimarik Общие вопросы C/C++ 5 17.09.2009 00:16
Не хватает памяти.Из-за того, что Паскаль старый? delphyok Паскаль, Turbo Pascal, PascalABC.NET 4 17.05.2009 15:49
используя оператор цикла и графики , составте программу для рисования на экране рисунка maksu6ka2009 Паскаль, Turbo Pascal, PascalABC.NET 3 25.04.2009 13:08
игры для памяти Exclusive Свободное общение 4 30.01.2008 23:06