掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TStringList.ObjectsのSave、Load (ID:18023)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
レスありがとうございます。BufSizeについては検索で簡単にヒットしますね。お手数をおかけしましてすみませんでした。 TStringListを継承して次のようなクラスを作りました。 type TStrCompList = class(TStringList) private function GetComp(Index: Integer): TComponent; procedure PutComp(Index: Integer; const Value: TComponent); public procedure Clear; override; procedure SaveToStream(Stream: TStream); override; procedure LoadFromStream(Stream: TStream); override; property Objects[Index: Integer]: TComponent read GetComp write PutComp; end; --- function TStrCompList.GetComp(Index: Integer): TComponent; begin Result:= TComponent(inherited GetObject(Index)); end; procedure TStrCompList.PutComp(Index: Integer; const Value: TComponent); begin inherited PutObject(Index, Value); end; procedure TStrCompList.Clear; var i: Integer; begin for i:= 0 to Count-1 do Objects[i].Free; inherited; end; 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.WriteComponent(Objects[i]); end; w.WriteListEnd; w.FlushBuffer; finally w.Free; end; end; procedure TStrCompList.LoadFromStream(Stream: TStream); var r: TReader; begin Clear; r:= TReader.Create(Stream, $fff); try r.ReadListBegin; while not r.EndOfList do AddObject(r.ReadString, r.ReadComponent(nil)); r.ReadListEnd; r.FlushBuffer; finally r.Free; end; end; ですが、AddObject('qwe',Button1)をしてSaveToStreamをするとw.WriteComponent(Objects[i]);でAccessViolationエラーが出てしまいます。 どこを直せばよいのでしょうか?よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.