Originariamente inviato da mondobimbi
come ho messo nel commento il compilatore mi dà errore quando cerco di chiamare il metodo Append per appendere i dati al file aperto FileLog, mentre logicamente ReWrite(FileLog) funziona correttamente.
Come faccio a chiamare la funzione Append??
Fai precedere al nome della procedura Append la unit in cui è definita questa funzione, cioè System.

codice:
System.Append(FileLog);
Ad ogni modo, io non introdurrei simili operazioni all'interno di un metodo che viene richiamato quando un oggetto viene distrutto: si rischia di compromettere la corretta distruzione dello stesso in caso di errore od eccezione.

In secondo luogo, il metodo Free non è virtuale, pertanto non può essere ridefinito nelle classi discendenti: eventuali deinizializzazioni vanno inserite nel metodo Destroy che è il metodo da ridefinire ed è preposto a questa funzione.

Non si tratta solo di una convenzione, ma vi sono anche motivi pratici per cui si segue questa strada.

Inoltre, non puoi garantire che la tua implementazione venga richiamata, proprio perché il metodo Free non è virtuale e non può essere ridefinito (al contrario del metodo Destroy): se un oggetto appartenente alla classe che hai creato viene assegnata ad una variabile di tipo TStringList o appartenente a qualsiasi classe da cui discende la tua, chiamando il metodo Free attraverso quel riferimento non viene eseguito il tuo codice, bensì quello della classe base in cui viene introdotto tale metodo.

Insomma, al di là del problema riscontrato, la soluzione che hai adottato risulta "fumosa" sotto molti punti di vista secondo i canoni convenzionali e funzionali della programmazione Delphi.

Ciao!