Außer Speicherlöcher sehe ich keine Fehler.
Daher mal ohne Speicherlöcher. Step mal durch und schreib wo es knallt.
Delphi-Quellcode:
type
Thelper = class
public
caption: String;
id: Integer;
end;
var
tester: Thelper;
sl: TStringList;
begin
sl := TStringList.Create;
sl.OwnsObjects := true;
try
tester := Thelper.Create;
tester.caption := 'foo';
tester.id := 123;
sl.AddObject('bar', tester);
ShowMessage(Thelper(sl.Objects[0]).caption);
finally
sl.Free;
end;
end.