![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Картинка в поле БД [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.
ЗЫЫ: В этом примере есть одна ошибка, если найдеш лучше поймеш что к чему!!! ;)