Es wird der Wert zurückgegeben der zuletzt in result gespeichert.
Da Objekte als Zeiger übergeben werden, wird auch nur der Zeiger zurückgegeben und wie Luckie schon sagte, zerstörst du das Objekt bevor du die Funktion beendest. Deshalb bekommst du nichts sinnvolles zurück.
[edit]Willkommen bei der Delphi-PRAXIS.
[/edit]