掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
memorystreamを文字列として変数等に入れたい (ID:152081)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>サンプル画像がTStringGridということですが サンプル画像はDELPHIのIDEのプロパティー一覧になります。 IDEのiconを取得するには、DLL等をループで処理しますよね。 それをSGに代入しようと思ったときにIOでの読み込み手段がStreamとFILEの2つしかない場合、streamならメモリ処理できますが使わない場合は全部ファイルとして書き出しファイルとして読み込む処理が必要になるのでそのオーバーヘッドをなくすためにStreamを使いたいという感じです。 >Delphiの内部構造の知識はある方ですけど たぶんコントロール側ではやってくれないと思います 重大な思い違いが発覚しました!! streamやWriteComponentに全情報が入っていると思っていましたが 入っていませんでした(たぶん) これがvram さんの言っていたインデックス管理の難しさとか言う部分かもしれません。 もしかして、streamもwritecomponentsも復元できるだけの情報を保持していないのですか? stringlistで試してみたら、streamにはいっているであろうOBJECTが参照できませんでした。 // ------------------------------------ procedure TForm1.Button21Click(Sender: TObject); var sl1,sl2:TStringList; ms:TMemoryStream; i:integer; begin ms:= TMemoryStream.Create; sl1:=TStringList.create; sl1.AddObject('ddd', TObject(11)); sl1.AddObject('aaaccc', TObject(22)); sl1.SaveToStream(ms); sl1.Free; sl2:=TStringList.create; ms.position:=0; sl2.LoadFromStream(ms); for i := 0 to sl2.count -1 do begin //Memo1.lines.add(sl2[i]); Memo1.lines.add(inttostr(integer(sl2.Objects[i]))); end; sl2.Free; end; // ------------------------------------ という事は、memorystreamって何?ってところから調べ始める必要が出てきました。 そもそもがms.position:=0;のポジションて、いつも0にしているけど、内容の区別処理に使うものだと思いますが 何で定義して、何のためにあるの?な基本を調べる事から始める感じになりそうです(>_<)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.