Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.041 c
2-1177585517
Marat
2007-04-26 15:05
2007.05.20
Округлить


2-1178098759
Washington
2007-05-02 13:39
2007.05.20
Надо закрыть доступ к 2-м файлам.


3-1172611235
Master_
2007-02-28 00:20
2007.05.20
Ttable и проблемма транзакций


1-1174579137
DelphiLexx
2007-03-22 18:58
2007.05.20
Рассылка сообщений дочерним окнам


1-1174366976
kolius
2007-03-20 08:02
2007.05.20
Цвет в Richedit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский