Generell weiß ich natürlich, wie man Objekte erstellt und wieder freigibt. Nur nicht, wenn der Rückgabewert ein Objekt, wie z.B. TStringList, ist.
Delphi-Quellcode:
function funktion: TStrings;
begin
Result := TStringlist.Create;
try
Result.Add('Eins');
Result.Add('Zwei');
except
FreeAndNil(Result);
raise;
end;
end;
Ich bin mal mit dem Compiler durchgesprungen: Der Except-Block wird nicht durchlaufen und somit das Objekt auch nicht freigegeben. Oder habe ich noch nicht richtig verstanden, was "raise" macht?