Daddy - Don't feel too bad, I thought my suggestion was misinterpreted as well, which intentionally did NOT include the actual WriteToLogFile() routine code block.
Looking at the OP's original query, although he specified his data frequency, missing is the potential data size.
[ol]
[li]Is it necessary to create a file backup for every write-to-disk? No.[/li]
[li]Is it advisable to create a file backup at program start? Probably yes.
my demo, btw[/li]
[li]Should the write-to-disk include a try/except to handle ANY disk-write-error? Absolutely yes.[/li]
[li]Is there any danger in calling a final file-close in the OnFormDestroy event? No, not any more dangerous than putting it in the finalization block of a unit.[/li]
[/ol]
I typically use StringLists as temporary storage within a single routine, where it's created, used and freed. Each List.Add() is sequential. I prefer TMemo to proved the user with visual progress information. For data, it's best to write to disk with open (append), write, close, which is sequential. I often combine Memo.lines.add() within the same routine where I write to disk if that's what I'm doing. Continually using List.SaveToFile() is not sequential, although the result may appear to be. I think that's what so many were trying to tell the Op.
As pointed out, if the file is left open, your write-to-disk should include a flush-to-disk if someone pulling the plug would be catastrophic. You have to consider "Are you doing a destructive read?" or can the output be recreated by running again with the same input? If partial data has no value then why bother saving until the end?
This thread appears to have taken a twist when I brought up log-files. My apology.
Most coders have their own way of saving data and re-use their own code. There's really no wrong answer if yours works for you. You can Google all day, and all you'll get is how someone else does theirs. You need to create your own and let it evolve to suit YOUR needs and style.
"Garbage in, garbage out".
Roo