Stell doch deine Methode einfach auf einen Var-Parameter um:
Delphi-Quellcode:
procedure CurrentOL(var Value : TComponent);
begin
if ... then Value := EineKomponente
else Value := EineAndereKompoente;
end;
procedure DoSomething;
var temp: TObject;
begin
CurrentOL(temp);
temp.Free;
temp := TIrgendwas.Create(form1);
end;
Nein, vergiss es, mal wieder erst geschrieben und dann nachgedacht. Dadurch schreibst den neuen Zeiger ja nicht in die alte Variablen (EineKomponente oder EineAndereKompoente).