FileStreamと言えばファイルの読み書きをする時にとっても便利なモンですが、
これにはコンポーネントの状態を読み書きできる機能があったりする。
それがRead/WriteComponentメソッド。
使い方は通常のFileStreamと同様にまずCreateし、メソッドの引数には保存or読み出したいコンポーネントを指定すればいい。
例えばForm1を保存するなら以下のようにすればいい。
procedure SaveFormState;//手続き名はテキトー
var
FS: TFileStream;
begin
FS:= TFileStream.Create(ExtractFilePath(Application.ExeName)
+'FormState.dat',fmCreate);
try
FS.WriteComponent(Form1);
finally
FS.Free
end;
end;
この例ではファイル名はFormState.datとし、EXEのフォルダに出力したが、
この辺はもちろん変えちゃって構わない。
WriteComponentを使うと、その記録するコンポーネントとプロパティが記録される。
読み込む際はReadComponentを使う。Createの際の第2引数にfmOpenRead当りを指定し、
ReadComponentには同じく読み出したいコンポーネントを指定する。
普通にファイルにセーブするのが面倒な場合にはこれがオススメだが、
余計な情報も含まれてしまうのでその辺は要注意。