Auf die lokale Variable kannst Du verzichten.
Du gibst die Stringliste ja frei. Da ist es nur folgerichtig, dass es knallt.
Delphi-Quellcode:
function sende (sa: TStringlist; sb: TStringlist): TStringlist;
[s]var
x : Tstringlist;[/s]
begin
result := Tstringlist.create;
result.add( sa[0] + Sb[0] );
form1.memo1.lines.Assign(result); // Testweise ausgeben - funktioniert
{ welches der folgenden beiden? }
// result := (z); geht ja auch nicht
//result.Assign(z);
[s] x.free;[/s]
end;