RAD Studio VCL Reference
|
Provides direct access to the string that stores the text represented by the TStringStream object.
property DataString: string;
__property AnsiString DataString;
Use DataString to get access to the text of the stream. The text represents the information that is being transferred by means of the string stream. Size is the number of bytes in the string, and Position is the current position within DataString.
C++ Examples:
/* This example shows how to use the built-in component streaming support to convert any component into a string and convert that string back into a component. */ #include <memory> //for STL auto_ptr class class MyScrollBar : public TScrollBar { __published: // IDE-managed Components private: // User declarations public: // User declarations __fastcall MyScrollBar(TComponent* Owner); }; __fastcall MyScrollBar::MyScrollBar(TComponent* Owner) : TScrollBar(Owner) { } void RegisterClassesWithStreamingSystem(void) { // Make sure that as part of the startup // code our streaming classes are registered // with the streaming system. #pragma startup RegisterClassesWithStreamingSystem Classes::RegisterClass(__classid(MyScrollBar)); } MyScrollBar *ScrollBar1; AnsiString __fastcall ComponentToString(TComponent *c) { AnsiString as; std::auto_ptr<TMemoryStream> pms(new TMemoryStream); std::auto_ptr<TStringStream> pss(new TStringStream(as)); try { pms->WriteComponent(c); pms->Seek(0, soFromBeginning); ObjectBinaryToText(pms.get(), pss.get()); pss->Seek(0, soFromBeginning); as = pss->DataString; } catch(...) { ShowMessage("Streaming error."); } return as; } void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Text = ComponentToString(ScrollBar1); } TComponent *__fastcall StringToComponent(AnsiString as) { std::auto_ptr<TMemoryStream> pms(new TMemoryStream); std::auto_ptr<TStringStream> pss(new TStringStream(as)); TComponent *pc; try { ObjectTextToBinary(pss.get(), pms.get()); pms->Seek(0, soFromBeginning); } catch(...) { ShowMessage("Streaming error."); } pc = pms->ReadComponent(NULL); return pc; } void __fastcall TForm1::Button2Click(TObject *Sender) { TComponent *temp = StringToComponent(Memo1->Text); ScrollBar1->Free(); ScrollBar1 = dynamic_cast<MyScrollBar *>(temp); ScrollBar1->Parent = Form1; ScrollBar1->Visible = TRUE; } void __fastcall TForm1::FormCreate(TObject *Sender) { ScrollBar1 = new MyScrollBar(Form1); // Form1 will clean up the scroll bar. ScrollBar1->Parent = Form1; ScrollBar1->Visible = TRUE; ScrollBar1->Top = 48; ScrollBar1->Left = 250; ScrollBar1->Name = "Ricksbar"; }
Delphi Examples:
{ This example shows how to use the built-in component streaming support to convert any component into a string and convert that string back into a component. } type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; MyScrollBar = class(TScrollBar) end; var Form1: TForm1; ScrollBar1: MyScrollBar; implementation {$R *.dfm} function ComponentToStringProc(Component: TComponent): string; var BinStream:TMemoryStream; StrStream: TStringStream; s: string; begin BinStream := TMemoryStream.Create; try StrStream := TStringStream.Create(s); try BinStream.WriteComponent(Component); BinStream.Seek(0, soFromBeginning); ObjectBinaryToText(BinStream, StrStream); StrStream.Seek(0, soFromBeginning); Result:= StrStream.DataString; finally StrStream.Free; end; finally BinStream.Free end; end; function StringToComponentProc(Value: string): TComponent; var StrStream:TStringStream; BinStream: TMemoryStream; begin StrStream := TStringStream.Create(Value); try BinStream := TMemoryStream.Create; try ObjectTextToBinary(StrStream, BinStream); BinStream.Seek(0, soFromBeginning); Result:= BinStream.ReadComponent(nil); finally BinStream.Free; end; finally StrStream.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text:= ComponentToStringProc(ScrollBar1); end; // Edit the scrollbar parameters in the memo, click this // button and see the scrollbar change. procedure TForm1.Button2Click(Sender: TObject); begin ScrollBar1.Free; ScrollBar1:= (StringToComponentProc(Memo1.Text) as MyScrollBar); ScrollBar1.Parent:= Form1; ScrollBar1.Visible:= TRUE; end; procedure TForm1.FormCreate(Sender: TObject); begin ScrollBar1:= MyScrollBar.Create(Form1); ScrollBar1.Parent:= Form1; ScrollBar1.Visible:= TRUE; ScrollBar1.Top:= 48; ScrollBar1.Left:= 250; ScrollBar1.Name:= 'Ricksbar'; end; procedure TForm1.FormDestroy(Sender: TObject); begin ScrollBar1.Free; end; initialization RegisterClass(MyScrollBar);
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|