That is because type inference in Delphi is poor. It could in fact infere T
from the first parameter but unfortunately the compiler is not satisfied then for the second parameter which would perfectly match.
You have to explicitly state the type parameter like this:
TgrsObj.Using<TStringStream>(TStringStream.Create, procedure(ss: TStringStream)
begin
ss.WriteString('test string');
Memo1.Lines.Text := ss.DataString;
end);