作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家。
我正在尝试拯救我的类(class):
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;
使用以下代码进行归档:
var
Storage: TJvAppXMLFileStorage;
begin
Storage := TJvAppXMLFileStorage.Create(nil);
try
Storage.WritePersistent('', Self);
Storage.Xml.SaveToFile(FileName);
finally
Storage.Free;
end;
但文件始终为空。
我做错了什么?
最佳答案
看起来 TJvCustomAppStorage 不支持属性中的泛型。该代码未使用扩展 RTTI,并且对 TJvCustomAppStorage.GetPropCount 的调用返回 0。
这引出了另一个问题 - Are there Delphi object serialization libraries with support for Generics? ?
我的测试代码:
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.
关于delphi - 保存/加载 TObject(TPercient) 到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6311902/
大家。 我正在尝试拯救我的类(class): TA= class(TPersistent) private FItems: TObjectList; FOnChanged: TNoti
我是一名优秀的程序员,十分优秀!