掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TStringList.ObjectsのSave、Load (ID:18026)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
@123さま、えーとさまレスありがとうございます。 >これだと Objects[] は TObject 型なので AV が起こるのでは? >明示的に w.WriteComponent(TButton(Objects[i])); とかでキャストするのかなぁ? Objects[]がTComponentを返すクラスにしてあるので。。。結局以下のようにしてうまくいったようです。何度もレスをしていただきありがとうございました。 procedure TStrCompList.SaveToStream(Stream: TStream); var i: Integer; w: TWriter; begin w:= TWriter.Create(Stream, $fff); try w.WriteListBegin; for i:= 0 to Count-1 do begin w.WriteString(Strings[i]); w.WriteRootComponent(Objects[i]); end; w.WriteListEnd; finally w.Free; end; end; procedure TStrCompList.LoadFromStream(Stream: TStream; AOwner: TComponent); var i: Integer; r: TReader; begin Clear; r:= TReader.Create(Stream, $fff); try r.ReadListBegin; while not r.EndOfList do begin i:= Add(r.ReadString); Objects[i]:= r.ReadRootComponent(nil); AOwner.InsertComponent(Objects[i]); end; r.ReadListEnd; finally r.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.