delphi – 在文本文件中保存对象的TList
发布时间:2020-12-15 09:26:51 所属栏目:大数据 来源:网络整理
导读:我有以下课程: 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
我有以下课程:
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 1 Artist 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; 您还需要实现反序列化反序列化.这应该不会太难. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |