Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Картинка в поле БД [D7, Acccess]


leha ©   (2005-08-12 10:14:00) 

Подскажите пожалуйста, если кто знает, как загрузить картинку в поле БД, и как считать её оттуда. Для работы с базой использую ADO.


rayrom   (2005-08-12 12:17:00) [1]

2 Desdechado
Надо ЗЫ внимательнее читать, тан написано что весть текст примера с комментариями взято из Кулибы 2000!!!


Desdechado   (2005-08-12 11:38:00) [2]

> TBlobField и TBlobStream не смогли мне помочь (может быть из-за убогой документации borland?)
документация нормальная там
а вот с пониманием ее явно проблемы
лучше разбираться на примерах, а не плеваться
var
 oS: TStream;
 oJPG: TJPEGImage;
begin
 oS := qryGraf.CreateBlobStream( qryGraf.FieldByName( 'PICT_BLOB' ), bmRead );
 try
   if( oS.Size > 0 ) then begin
     case( cExt[ 1 ] ) of
       'B':
         Image1.Picture.Bitmap.LoadFromStream( oS );
       'I':
         Image1.Picture.Icon.LoadFromStream( oS );
       'J':
         begin
           oJPG := TJPEGImage.Create;
           oJPG.LoadFromStream( oS );
           oJPG.DIBNeeded;
           Image1.Picture.Bitmap.Assign( oJPG );
           oJPG.Free;
         end;
       'E', 'W':
         Image1.Picture.Metafile.LoadFromStream( oS );
     end; // case
   end; // if( BlobSize )
 finally
   os.Free;
 end;


rayrom   (2005-08-12 10:33:00) [3]

Во простой пример:
BLOBFIELD как BITMAP

Сохраняем Bitmap в поле dbase с именем Icon. Icon представляет собой двоичное Blob-поле.
   procedure ....
var IconStream : TMemoryStream;
..
..
begin

.
.
IconStream := TMemoryStream.Create;
Image1.picture.icon.savetostream(IconStream);
(Table1.fieldbyname('Icon') as TBlobField).LoadFromStream(IconStream);
Table1.post;
IconStream.Free;
.
.
end;


** Читаем Bitmap в Timage из поля dbase с именем Icon.
   procedure .....
var IconStream : TMemoryStream;
..
..
begin

.
.
IconStream := TMemoryStream.Create;
(Table1.fieldbyname('Icon') as TBlobField).SaveToStream(IconStream);
{что бы что-нибудь записать, необходимо установить позицию потока в ноль!}
IconStream.Position := 0;
appointment.iconimage.picture.icon.loadfromstream(iconstream);
IconStream.Free;
end;  

Надеюсь это поможет, поскольку найти информацию в справочной системе по этой теме практически невозможно. Чтобы сделать это, я перепробовал множество способов. Я пробовал использовать TBlobField и TBlobStream, но они не смогли мне помочь (может быть из-за убогой документации borland?).

ЗЫ: Взято из Кулиба2000.
ЗЫЫ: В этом примере есть одна ошибка, если найдеш лучше поймеш что к чему!!! ;)


Наверх

Титульная страница Поиск, карта сайта Написать письмо