Delphi : クロージャ : 補助関数

Apply???という補助関数を適宜作ることで、クロージャの呼び出しをラップすることができます。
例)

type
  PSS_S = ^TSS_S;
  TSS_S = record
    in0, in1, ret: string;
  end;
function ApplySS_S(F: IClosure; in0, in1: string): string;
  var
    call: TSS_S;
  begin
    call.in0 := in0;
    call.in1 := in1;
    F._(@call);
    Result := call.ret;
  end;