Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > картинки+SQL


Автор: Grig 25.9.2005, 08:24
Здравствуйте!!
Да знаю, что эта тема не раз обсуждалась на форуме, но мне это к сожалению ничем не помогло...
Проблема стара как мир: записать картинку в базе данных, а потом ненапряжно прочитать ее.
Записываю так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
  begin
  ADOTable1.Edit;
  (ADOTable1.FieldByName('Img') as TBlobField).LoadFromFile(OpenPictureDialog1.FileName);
  ADOTable1.Post;
  end;
end;


И вроде записывает.
Только при моих попытках почитать это дело:
Код

procedure TForm1.Button2Click(Sender: TObject);
var
  B: TBitmap;
begin
  B := TBitmap.Create;
  try
    B.Assign(ADOTable1img);
    Image1.Picture.Bitmap.Assign(B);
  finally
    B.Free;
  end;
end;

Этим и другими способами вылазит ошибка в ран-тайме : "bitmap is not valid"
Впарился уж.
Помогите!...

Автор: Alex 25.9.2005, 08:38
http://vingrad.ru/DELPHI-DLP-001498
http://vingrad.ru/DELPHI-DLP-001491

Автор: Grig 25.9.2005, 10:21
А вот это интересно:
Я код из Faq-a так интерпретировал:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
IconStream : TMemoryStream;
begin
ADOTable1.Append;
ADOTable1.Edit;
IconStream := TMemoryStream.Create;
Image1.picture.Bitmap.SaveToStream(IconStream);
(ADOTable1.fieldbyname('Img') as TBlobField).LoadFromStream(IconStream);
ADOTable1.post;
IconStream.Free;
end;


Код

procedure TForm1.Button3Click(Sender: TObject);
var IconStream2 : TMemoryStream;
begin
  IconStream2 := TMemoryStream.Create;
(ADOTable1.fieldbyname('Img') as TBlobField).SaveToStream(IconStream2);
IconStream2.Position := 0;
image2.Picture.Bitmap.LoadFromStream(iconstream2) ;
IconStream2.Free;
end;

Однако при попытке сохранить изображение (первая процедура) изображение сохраняется и исчезает с экрана и никакой загрузки изображения не происходит.
Это с файлами *.jpg, *.gif
В то время как файлы *.ico работают нормально.
Но они мне собственно, вообще не нужны..
Что еще надо дописать, а?

Автор: Grig 26.9.2005, 09:11
Так-то я уже придумал хранить в базе только пути к файлам, но все равно хотелось бы узнать в чем дело...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)