delphi – 在文本文件中保存对象的TList

delphi – 在文本文件中保存对象的TList,第1张

概述我有以下课程: type TSong = class(TObject) private FArtist: String; FTitle: String; procedure SetArtist(Artist: String); procedure SetTitle(Title: String); public property Artist: S 我有以下课程:

type  TSong = class(TObject)  private    FArtist: String;    FTitle: String;    procedure SetArtist(Artist: String);    procedure SetTitle(Title: String);  public    property Artist: String read FArtist Write SetArtist;    property Title: String read FTitle Write SetTitle;    constructor Create(Artist,Title: String);  end;type  TPlayList = class(TList)    private      procedure ShowInListBox(Box: Pointer);    public      { Public-Deklarationen }    end;

在运行时,我创建这些类的实例:

PlayList := TPlayList.Create;PlayList.Add(TSong.Create('Artist 1','Title 1'));PlayList.Add(TSong.Create('Artist 2','Title 2'));PlayList.Add(TSong.Create('Artist 3','Title 3'));PlayList.Add(TSong.Create('Artist 4','Title 4'));

程序关闭后,我想将这些数据保存到文本文件中.我怎样才能做到这一点?

最好的方法可能是创建一个属于TPlayList类的过程,对吗?

procedure SavetoTxtfile(fname: String);

这样的功能究竟应该做什么?当程序再次启动时,我希望能够再次构建播放列表.

如果将数据保存在这样的文本文件中会很好:

Artist 1///Title 1Artist 2///Title 2
解决方法 你走在正确的轨道上.您要做的是称为序列化,将对象转换为可流式的形式,如文件.

您需要开发一种格式.格式究竟是什么并不重要,只要它是一致的并保留重建对象所需的所有数据.你说你想要一个文本文件,所以在这种情况下你可以使用一个内置文件IO的TStringList来获取一些快捷方式.

尝试这样的事情:

procedure TSong.Serialize(serializer: TStringList);begin  serializer.Add(format('%s///%s: %s',[Artist,Title,filename])); //add a filename member! You need one!end;procedure TPlayList.Serialize(const filename: string);var  serializer: TStringList;  i: integer;begin  serializer := TStringList.Create;  try    for i := 0 to Count - 1 do      TSong(self[i]).Serialize(serializer);    serializer.Savetofile(filename);  finally    serializer.Free;  end;end;

您还需要实现反序列化反序列化.这应该不会太难.

总结

以上是内存溢出为你收集整理的delphi – 在文本文件中保存对象的TList全部内容,希望文章能够帮你解决delphi – 在文本文件中保存对象的TList所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1258630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存