掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
memorystreamを文字列として変数等に入れたい (ID:152061)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
フォームにListBox1とMemo1 Button1 Button2を置いてボタン1と2のクリックイベントの中身と関数2つのソースを書きます ボタン1がListBox1をシリアライズ化してテキスト化してメモに表示 ボタン2がメモの内容をシリアライズ化された文字列として受け取りListBox1に復元します ボタン2のイベントの先頭でクリアしているのに復元されると思います ボタン1を押してからMemo1の内容を手動で修正してボタン2を押すとその内容がListBox1に反映されます 途中テキスト化していますがテキスト化せずに保存読込でもOKです。 リソース形式 拡張子 res 形式で保存されます。 function BinToText(m: TMemoryStream): string; var StrStream: TStringStream; s: string; begin StrStream := TStringStream.Create(s); try m.Seek(0, soFromBeginning); ObjectBinaryToText(m, StrStream); StrStream.Seek(0, soFromBeginning); Result:= StrStream.DataString; finally StrStream.Free; end; end; procedure TextToBin(m: TMemoryStream;str : string); var StrStream: TStringStream; begin StrStream := TStringStream.Create(str); try m.Seek(0, soFromBeginning); StrStream.Seek(0, soFromBeginning); ObjectTextToBinary(StrStream, m); m.Seek(0, soFromBeginning); finally StrStream.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var e : TMemoryStream; s : string; begin ListBox1.items.add('aaa'); ListBox1.items.add('bbb'); ListBox1.items.add('ccc'); e := TMemoryStream.Create; try e.WriteComponent(ListBox1); s := BinToText(e); Memo1.Lines.Text := s; finally e.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); var e : TMemoryStream; s : string; begin ListBox1.Clear; e := TMemoryStream.Create; try s := Memo1.Lines.Text; TextToBin(e,s); e.ReadComponent(ListBox1); finally e.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.