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

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

Delphi + TImage и MSSQL + image [D5, MSSQL]


Денис ©   (2002-12-15 18:54:00) 

Задолбался искать, подскажите, плиз. Ситуация: есть компонент TImage, в нем изображение. Хочу его записать в табличку посредством хранимой процедуры, представленной как TADOStoredProc. Напишите, как это должно выглядеть. Я так понимаю, это будет что-то вроде:

ADOStoredProc1.Parameters.ParamByName("@photo")... := ???

Как из TImage вытащить изображение? Всем спасибо, кто откликнулся...


Денис   (2002-12-16 22:04:00) [1]

Утром попробую... Спасибо большое!


Набережных С.   (2002-12-16 19:45:00) [2]

Обратно - в обратном порядке:) Примерно так:

var
Stream: TMemoryStream;
begin
ADOQuery1.Open;
Stream:=TMemoryStream.Create;
TBlobField(ADOQuery1.Fields[0]).SaveToStream(Stream);
ADOQuery1.Close;
Stream.Position:=0;
Image1.Picture.Bitmap.LoadFromStream(Stream);
Stream.Free;
end;

P.S. try-finally расставь.


Денис   (2002-12-16 14:21:00) [3]

asmith-у: наоборот, получится :) Уже получилось! Там не can"t be used, там же can! Теперь бы вот вытащить ее оттуда и отобразить...

Надеюсь на ответ Набережных С. или любого другого, кто может помочь. Спасибо!


Денис   (2002-12-16 10:53:00) [4]

Спасибо. Думал, смогу легко сделать обратное преобразование, да не тут-то было. Не подскажете, как из базы на этот же TImage картинку вывести? :)

Стыдно, конечно, но не получается...


Набережных С.   (2002-12-15 22:10:00) [5]

Попробуй, может прокатит(я не проверял)

var
Stream: TMemoryStream;
V: Variant;
P:PByte;
begin
Stream:=TMemoryStream.Create;
Image1.Picture.Bitmap.SaveToStream(Stream);
Stream.Position:=0;
V:=VarArrayCreate([1,Stream.Size],varByte);
P:=VarArrayLock(V);
Stream.Read(P^,Stream.Size);
VarArrayUnlock(V);
ADOStoredProc1.Parameters.ParamByName("@photo").Value:=V;
ADOStoredProc1.ExecProc;
Stream.Free;
end;


asmith   (2002-12-15 19:56:00) [6]

"All data types, including text, ntext and image, can be used as a parameter for a stored procedure" - это из SQL SERVER BOL. Так что хранимой процедурой не получится.


Наверх

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