AlekXL Цитата: Если у меня в переменной A ссылка на аноним, а мне нужна независимая копия с тем же (по значению) контекстом в переменной b .. это возможно сделать?
если я правильно понял, то что-то типа такого (для delphi>=2010):
Код: type
TRefProcAdapter<T> = class
class function MakeCopy(ARefProc: T): T;
end;
...
uses System.Rtti, System.TypInfo;
...
class function TRefProcAdapter<T>.MakeCopy(ARefProc: T): T;
type
PInterface = ^IInterface;
var
ProcType: TRttiInstanceType;
RefObj: TObject;
ResultObj: TObject;
f: TRttiField;
begin
Assert(PTypeInfo(TypeInfo(T)).Kind = tkInterface);
RefObj := PInterface(@ARefProc)^ as TObject;
ResultObj := RefObj.ClassType.Create;
ProcType := TRttiContext.Create.GetType(RefObj.ClassInfo) as TRttiInstanceType;
Assert(Assigned(ProcType));
for f in ProcType.GetDeclaredFields do
f.SetValue(ResultObj, f.GetValue(RefObj));
ResultObj.GetInterface(GetTypeData(PTypeInfo(TypeInfo(T))).Guid, Result);
end;