caw*_*caw 4 delphi class file list save
我有以下课程:
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;
Run Code Online (Sandbox Code Playgroud)
在运行时,我创建这些类的实例:
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'));
Run Code Online (Sandbox Code Playgroud)
程序关闭后,我想将这些数据保存到文本文件中.我怎样才能做到这一点?
最好的方法可能是创建一个属于TPlaylist类的过程,对吗?
procedure SaveToTxtFile(fName: String);
Run Code Online (Sandbox Code Playgroud)
这样的功能究竟应该做什么?当程序再次启动时,我希望能够再次构建播放列表.
如果将数据保存在这样的文本文件中会很好:
Artist 1///Title 1
Artist 2///Title 2
Run Code Online (Sandbox Code Playgroud)
你走在正确的轨道上.您要做的是称为序列化,将对象转换为可流式的形式,如文件.
您需要开发一种格式.格式究竟是什么并不重要,只要它是一致的并保留重建对象所需的所有数据.你说你想要一个文本文件,所以在这种情况下你可以使用一个内置文件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;
Run Code Online (Sandbox Code Playgroud)
您还需要实现反序列化反序列化.这应该不会太难.
归档时间: |
|
查看次数: |
3690 次 |
最近记录: |