I have the following classes:
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;
At runtime, I create instances of these classes:
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'));
When the program is closed, I would like to save these data into a text file. How can I do this?
The best way would probably be to create a procedure which belongs to the TPlaylist class, right?
procedure SaveToTxtFile(fName: String);
What should such a function exactly do? When the program is started again, I would like to be able to build the playlist again.
It would be nice if the data would be saved in a text file like this:
Artist 1///Title 1
Artist 2///Title 2
You’re on the right track. What you’re trying to do is called serialization, turning an object into a streamable form like a file.
You need to develop a format. Exactly what the format is doesn’t matter, as long as it’s consistent and preserves all of the data that you require to reconstruct the object. You say you want a text file, so you can take a bit of a shortcut in this case by using a TStringList, which has file IO built in.
Try something like this:
You’ll also want to implement the inverse, deserialization. It shouldn’t be too difficult.