La classe TStrings è una classe astratta, pertanto non va creata e utilizzata, poichè funge solamente da scheletro implementativo (a mo' di interfaccia) per le classi discendenti, come TStringList ad esempio.
In secondo luogo, non hai bisogno di creare un'istanza dell'oggetto dato che dopo tale operazione assegni alla variabile di tipo TStrings il riferimento alla proprietà Files; avrai un "memory leak" poichè si perde il riferimento all'oggetto TStrings che hai creato prevenendo la possibilità di distruggerlo...tuttavia, finisci per distruggere l'oggetto esposto dalla proprietà Files richiamando Destroy, di fatto "rompendo" il normale funzionamento del componente.
Ottieni un Access Violation poichè alla seconda esecuzione il componente ti restituisce il riferimento immagazzinato nella proprietà Files ad un oggetto che, però, hai distrutto precedentemente.
Infine, concludo con un ulteriore suggerimento: per distruggere un oggetto, è meglio chiamare il metodo Free al posto di Destroy, poichè il primo è statico ed è in grado di controllare se il riferimento utilizzato è diverso da nil.
Nel caso specifico, non hai bisogno di creare alcunchè, né di distruggerlo, soprattutto se si tratta di un oggetto gestito internamente dal componente.
Direi che ci sono diverse lacune riguardo i principi fondamentali di programmazione in Delphi...consiglierei un appropriato ripasso o studio approfondito.
Ciao!![]()