List or array of scripter based classes

Hi
My script has scripter declared class (with {$CLASS TScriptDataClass..)
What's the best way to collect unknown number of objects of that classs to list/array etc
Class must be defined in scripter.
I need to only add them and then step trough them twice.
using tStringlist seems to work, but it sounds dangerous, but is it?

 list :=tstringlist.create;
 x := tScritpDataClass.Create;
 x.account := '3000';
 x.amount := 10.2;
 list.add(x);
 x := tScritpDataClass.Create;
 x.account := '3100';
 x.amount := 13.2;
 list.add(x);
 x := tScritpDataClass.Create;
 x.account := '3200';
 x.amount := 100.2;
 list.add(x);

showmessage(list.strings[2].account); <<- show 3200..

You can simply use arrays, like:

list := VarArrayCreate([0, 2], 12);
 x := tScritpDataClass.Create;
 x.account := '3000';
 x.amount := 10.2;
 list[0] := x;
 x := tScritpDataClass.Create;
 x.account := '3100';
 x.amount := 13.2;
 list[1] := x;
 x := tScritpDataClass.Create;
 x.account := '3200';
 x.amount := 100.2;
 list[2] := x;

showmessage(list[2].account); <<- show 3200..