Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Преобразование TBlobStream в TStream   Найти похожие ветки 

 
Amateur   (2007-03-27 12:43) [0]

Подскажите как это реализовать? У меня получалось только таким образом: в Memo записывал из BlobStream:

Memo1.Lines.LoadFromStream...

а потом от туда в TStream:

Memo1.Lines.SaveToStream...

Скажите, можно ли както без таких ухищрений загрузить данные из TBlobStream в TStream?


 
Desdechado ©   (2007-03-27 12:45) [1]

TBlobStream - это наследник Tstream
так что нет необходимости их преобразовывать


 
Amateur   (2007-03-27 12:51) [2]

Тогда подскажите пожалуйста а можно из БД загрузить в TSream данные?
Я в TBlobStream гружу
 
var
Bs: TBlobStream;
begin
Bs:=TBlobStream(Table1.CreateBlobStream(Table1.FieldByName("Info"),bmRead));
Bs.Free;
end;


А данные нужны мне в TStream. Подскажите как такое же сделать в TStream пожалуйста...


 
MBo ©   (2007-03-27 12:55) [3]

Прочитай [1] внимательно
Кроме того, сам по себе TStream - абстрактный класс.


 
Reindeer Moss Eater ©   (2007-03-27 12:55) [4]

Нельзя.


 
Amateur   (2007-03-27 12:59) [5]

Ну а в TMemoryStream ?
Почему нельзя? В memo загружаю из Blobstream. Читаю в MemoryStream из этого же мемо. Но это лишние торомза. Неужели никак??


 
Amateur   (2007-03-27 13:08) [6]

var
A: TBlobStream;
B: TMemoryStream;
begin
A <-- из DataSet"a
...
нужно: B <-- A


у B есть B.loadfromstream...
у A нет...

ну что совсем никак чтоли....


 
Desdechado ©   (2007-03-27 13:12) [7]

Если почитать справку, то TTable.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override;
Надеюсь, дальше понятно?


 
ЮЮ ©   (2007-03-27 13:13) [8]

Прям в Неlpe. Create, CreateBlobStream, Edit example.

The following example copies the data in the Notes field of Table1 or SQLDataSet1 to the Remarks field of ClientDataSet1.

Windows-only:

procedure TForm1.Button1Click(Sender: TObject);

var
 Stream1: TBlobStream;
 Stream2: TStream;
begin
 Stream1 := TBlobStream.Create(Table1Notes, bmRead);
 try
   ClientDataSet1.Edit;
   { here’s a different way to create a blob stream }
   Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName("Remarks"), bmReadWrite);
   try
     Stream2.CopyFrom(Stream1, Stream1.Size);
     ClientDataSet1.Post;
   finally
     Stream2.Free;
   end;

 finally
   Stream1.Free;
 end;
end;

Cross-platform:

procedure TForm1.Button1Click(Sender: TObject);

var
 Stream1, Stream2 : TStream;
begin
 Stream1 := SQLDataSet1.CreateBlobStream(SQLDataSet1.FieldByName("Notes", bmRead);
 try
   ClientDataSet1.Edit;
   Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName("Remarks"), bmReadWrite);
   try
     Stream2.CopyFrom(Stream1, Stream1.Size);
     ClientDataSet1.Post;
   finally
     Stream2.Free;
   end;
 finally
   Stream1.Free;
 end;

end;


P.S. Где тебе не удаеися воспользоваться  TBlobstream, что возникает необходимость вп втором TMemoryStream. Так разве не работает?

bs := Table1.CreateBlobStream(Table1.FieldByName("Info"),bmRead);
bs.Position := 0;
B.loadfromstream(bs);


 
Reindeer Moss Eater ©   (2007-03-27 13:19) [9]

Нельзя потому, что экземпляров TStream создавать нельзя.
Нельзя создавать экземпляры - нельзя грузить в несозданные экземпляры.


 
Amateur   (2007-03-27 13:24) [10]

Всем спасибо большое!!!!
Разобрался как грузить, все виды стримов из DataSet"a:

var
S: TStream;
Bs: TBlobStream;
Ms: TMemoryStream;

S:=Table1.CreateBlobStream(Table1.FieldByName("Info"),bmRead);
Bs:=TBlobStream(Table1.CreateBlobStream(Table1.FieldByName("Info"),bmRead));
Ms:=TMemoryStream(Table1.CreateBlobStream(Table1.FieldByName("Info"),bmRead));

Нуб я нуб )))
Спасибо еще раз всем за ответы )))


 
icWasya ©   (2007-03-27 13:53) [11]

Вот так лучше не делать
Ms:=TMemoryStream(Table1.CreateBlobStream(Table1.FieldByName("Info"),bmRead));


 
Amateur   (2007-03-27 14:19) [12]

Объясните плиз, какие могут быть проблемы при этом?


 
Плохиш ©   (2007-03-27 15:08) [13]


> Amateur   (27.03.07 14:19) [12]
> Объясните плиз, какие могут быть проблемы при этом?

Представляешь, ты решил подарить другу плавки, а размер померил у его сестры.


 
Amateur   (2007-03-28 06:24) [14]

Сейчас загружаю в TWebBrowser страницы в MHT-формате из блоб полей БД. Некоторые размером 0.5 МБ. Все работает отлично, для других целей эту конструкцию (..TMemoryStream(Table1.CreateBlobStream...) юзать не буду...


 
icWasya ©   (2007-03-28 10:15) [15]

А зачем вообще приводить к TMemoryStream



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.038 c
2-1178253625
Neket
2007-05-04 08:40
2007.05.20
Имя файла.


6-1163627850
skiner
2006-11-16 00:57
2007.05.20
Как передать текст с ServerSocket на ClientSocket?


2-1177893967
Qwerter
2007-04-30 04:46
2007.05.20
Фильтрация данных


3-1172567507
RomanH
2007-02-27 12:11
2007.05.20
Аналог цикла (FB) для MSSQL


2-1177744269
Alex7
2007-04-28 11:11
2007.05.20
Отбражение в DBGrid длинного формата времени