Wegen genau dieser Problematik meide ich Funktionen, die Klasseninstanzen zurückgeben, welche erst innerhalb der Funktion erzeugt werden, wie der Teufel das Weihwasser. Etwas anders ist es bei Interfaces, da ist es dann eben ein TInterfacedObject, aber das muss den Aufrufer ja nicht interessieren. Außerdem schließt man somit die unnötige Verschwendung von Bits und Bytes (
) wie hier aus:
Delphi-Quellcode:
function TMyClass.GetNames: TStrings;
var
List: TStringlist;
begin
List := TStringlist.Create;
//Liste beispielhaft befüllen
List.Add('Heinz');
List.Add('Hans');
List.Add('August');
Result := List;
end;
procedure TMyClass.VerarbeiteNames;
var
i: integer;
begin
for i := 0 to GetNames.Count - 1 do
Stringverarbeitung(GetNames[i]);
end;