アプリケーションのデータを保存するときに
IniファイルやレジストリやXMLファイルに保存とかという手法があるかと思いますが、
ある自作クラスがあったとして
そのクラスのパブリックな変数やパブリックなプロパティに対して
値を保存復帰する、よりよいやり方を模索しています。
やり方をご存知でしたら教えてください。
こういうことをやりたいのです。
TAがあったとして、
A1 := TA.Crate;
SerializeSaveToFile(A1, パス名)
と保存でき、
A2 := TA.Create;
SerializeLoadFromFile(A2, パス名);
というように読み出す方法ができないでしょうか
いちど、
SerializeSaveToFileとSerializeLoadFromFileを実装してしまうと
TBを作成して
B1 := TB.Create;
でも、使えるし、
TFormに対してもパブリックなプロパティが保存復帰させたりすることが
できたらうれしいと思うのですが。
そんなのできるでしょうか?
> オブジェクトの内容をファイルに保存、復元する
> オブジェクトのXMLシリアル化、逆シリアル化を行う
> http://dobon.net/vb/dotnet/file/xmlserializer.html
この内容と、同様とはいわないですが近いことができたらうれしいなと
思っております。
よろしくお願いします。
質問を読んでいたら、
TMemoryStreamのWriteComponent,ReadComponentが
頭に浮かびました。
オブジェクトの状態を保存復帰させるのなら
これで出来そうな気もするのですがいかがでしょうか?
的外れならすみません。
過去に同じような質問があるようです。
https://www.petitmonte.com/bbs/answers?question_id=2271
あとからクラスを変更しても復帰時にエラーを出したくないなら
オブジェクトのストリーム保存/読込クラス
というのもあるようです。
http://vram.hp.infoseek.co.jp/delphi.htm
お返事ありがとうございます。
遅くなりました。
参考にしてやってみます。
totonicaさんのところみても、余計なデータも含まれて保存されてしまうようですね。もう少し使いやすくならんものだろうかと、思ってしまいます。
Delphiメモ
No008:Read/WriteComponentメソッド
http://totonica.s41.xrea.com/doc/delphi_memo/delmemo_008.htm
Integer,String型のプロパティ値取得なら
uses
TypInfo
var
I,J,Count: Integer;
S: String;
begin
Count := GetPropList(Self,PropList);
I := 0;
while I < Count do
begin
// PropList^[I].Name //プロパティ名
// PropList^[I].PropType^.Kind //プロパティの型
case PropList^[I].PropType^.Kind pf
ktInteger: //Integer型
begin
J := GetOrdProp(Self,PropList^[I].Name)
end;
ktLString: //String型
begin
S := GetStrProp(Self,PropList^[I].Name);
end;
end;
end;
で出来る。
追加
var
PropList: PPropList;
変更
ktLString -> tkLString
ktInteger -> tkInteger
型はいろいろあるけど
type
TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray);
ObjStreamV
http://www14.atwiki.jp/vram/pages/6.html
を使用しては如何でしょうか?
ツイート | ![]() |