Eine Sache machst du schon mal falsch (weiß aber nicht ob's daran liegt)
Und zwar: wenn im Konstruktor ne
Exception geworfen wird, dann darf der Destruktor nicht aufgerufen werden. In diesem Fall sorgt Delphi schon dafür dass das nichts überigbleibt, ein .Free könnte also in einer
AV münden.
Wird eventuell irgendwo die Liste, die du zurückgibts mit .Free zerstört? Das könnte sehr gut die Fehlerursache sein. Ich glaube nämlich der Aufruf von TStringlist.Create dürfte fast nie fehlschlagen.
Falls FPaperTrays ein privates feld deiner Klasse ist, würde ich das auch nicht "herausgeben" - besser wäre hier ein Parameter
const x:TStrings
in den das hineingeschrieben wird. Dann brauchst du dich auch nicht mehr um den Konstruktor kümmern.