首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将TObject(TPersistent)保存/加载到XML

将TObject(TPersistent)保存/加载到XML
EN

Stack Overflow用户
提问于 2011-06-11 04:47:37
回答 2查看 1.4K关注 0票数 3

所有人。

我在试着拯救我的班级:

代码语言:javascript
复制
TA= class(TPersistent)
private
    FItems: TObjectList<TB>;

    FOnChanged: TNotifyEvent;
public
    constructor Create;
    destructor Destroy; override;
    ...
    procedure Delete(Index: Integer);
    procedure Clear;
    procedure SaveToFile(const FileName: string);
    ...
    property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
end;

使用以下代码来创建文件:

代码语言:javascript
复制
var
  Storage: TJvAppXMLFileStorage;
begin
  Storage := TJvAppXMLFileStorage.Create(nil);
  try
    Storage.WritePersistent('', Self);
    Storage.Xml.SaveToFile(FileName);
  finally
    Storage.Free;
  end;

但是文件总是空的。

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2011-06-11 14:10:43

看起来TJvCustomAppStorage不支持属性中的泛型。该代码不使用扩展的RTTI,并且对TJvCustomAppStorage.GetPropCount的调用返回0。

这引出了另一个问题-- Are there Delphi object serialization libraries with support for Generics?

我的测试代码:

代码语言:javascript
复制
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes, Generics.Collections, JvAppXmlStorage;
type

  TA = class(TPersistent)
  private
    FItems: TObjectList<TPersistent>;
  public
    constructor Create;
  published
    property
      Items: TObjectList < TPersistent > read FItems write FItems;
  end;

  { TA }

constructor TA.Create;
begin
  FItems := TObjectList<TPersistent>.Create;
end;

var
  Storage: TJvAppXMLFileStorage;
  Test: TA;
begin
  Test := TA.Create;

  Test.Items.Add(TPersistent.Create);

  Storage := TJvAppXMLFileStorage.Create(nil);
  try
    Storage.WritePersistent('', Test);
    WriteLn(Storage.Xml.SaveToString);
    ReadLn;
  finally
    Storage.Free;
  end;

end.
票数 2
EN

Stack Overflow用户

发布于 2011-06-11 05:59:15

我不确定,但是如果TJvAppXMLFileStorage使用RTTI,那么我认为你必须发布你想要保存/加载的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6311902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档