掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
memorystreamを文字列として変数等に入れたい (ID:152056)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ストリームクラスのメソッド WriteComponentに引数として TComponentを継承したクラスを渡すとストリームに書き込まれます。なのでそのストリームを保存すればバイナリですが保存出来ます 「ループ」という言葉が出てきているのでリストのような構造と思われますが 残念なことにリストには直接対応していません なのでストリームの先頭にリストの個数を書き込み その後ろにループ文で WriteComponent(Items[i]) // Items[i] は TComponent型から継承したクラス と書き込み 読み込む時は個数を読み込んでから読み込むことになります。 EOFまで読み込むように作れば個数を書き込まなくても良いと思います ただ重要な問題点として 要素を増やすとシリアライズ化したときデータの長さが崩れる また要素を減らすとReadComponentで存在しない要素を読み込もうとしてエラーになるなどがあります ではどうすればいいのか? バイナリでも出来なくはないですが説明用にObjectBinaryToTextでテキスト化したものを データ数分の文字列リストとして書き込むのです 読み込む時はその文字列リストの行数=データ数になります ただしバイナリでもObjectBinaryToTextでもその変換で特殊文字コードが含まれていても 1行分の普通の文字列として管理できるようにするためのエンコード、デコードが必要です (文字列中に改行や「"」「,」などがあると代入処理で誤動作する) 奥が深いというかめんどくさいですね もしTComponentを継承したクラスに要素を保存してそのクラスをTListクラスで管理している という形式で設計していくというのであれば クラスの要素丸ごと iniに保存、読込するクラスを Qiitaに投稿しておきますよ (要望が無くても近日中に公開を予定しています)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.