Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизПреобразование 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c