I needed a way to save the ListView and load it back, and I found this easy method that works great.
Originally found on. programmersheaven.com«.
Had to be modified a little to work in Delphi 11.


The file will be saved in the folder where your app is running or installed.
If you want it saved in another location, you will have to specify that in the
CFFCS | CarrzSynEdit: | Delphi/Pascal
S.SaveToFile('List.txt');


to this (A folder within your apps folder (Notice the Forward slash))
CFFCS | CarrzSynEdit: | Delphi/Pascal
S.SaveToFile('MyFolder/List.txt');


or this
CFFCS | CarrzSynEdit: | Delphi/Pascal
S.SaveToFile('C:\Program Files (x86)\MyProgram\List.txt');

CFFCS | CarrzSynEdit: | Delphi/Pascal
procedure TForm1.BtnSaveListClick(Sender: TObject);
var
  S : TStringList;
  i : integer;
begin
S := TStringList.Create;
  for i := 0 to ListView1.Items.Count-1 do
S.Add('"'+ ListView1.Items[i].Caption +'","'+ ListView1.Items[i].SubItems.CommaText + '"');
S.SaveToFile('List.txt');
S.Free;
end;

CFFCS | CarrzSynEdit: | Delphi/Pascal
procedure TForm1.BtnLoadListClickClick(Sender: TObject);
var
S : TStringList;
i : integer;
begin
S := TStringList.Create;
S.LoadFromFile('List.txt'); // First load the file
ListView1.Clear; // Clear the view
for i := 0 to S.Count-1 do // Add all loaded items to the list
with ListView1.Items.Add do begin
SubItems.CommaText := S[i];
Caption := SubItems[0]; // Set the caption to the first subitem
SubItems.Delete(0); // Remove the caption
end;
 end;