Ich glaube nicht, dass es an der Übergabe liegt.
Aber warum gibst Du die Instanz von Templist zurück?
Wenn Du doch eh auf der Liste Veränderungen vornimmst, dann brauchst Du sie nicht zurückzugeben.
Delphi-Quellcode:
procedure Machwas;
var
myListe: TStringList;
begin
myListe := TStringList.Create();
try
// hier noch die liste füllen...
// der Aufruf
myListe := DeleteComments(myListe);
// ist vollkommen identisch mit:
DeleteComments(myListe);
finally
if Assigned(myListe) then
FreeAndNil(myListe);
end;
end;