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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)