Может кто-нибудь объяснить, почему код ниже не работает?
type TIDEThemeObserverFunc = reference to procedure(foo: integer);
var fObserverFuncs: TList<TIDEThemeObserverFunc>
function RegisterEventObserver(aObserverFunc: TIDEThemeObserverFunc): Pointer;
begin
fObserverFuncs.Add(aObserverFunc);
Result := @aObserverFunc;
// line below somehow fails
assert(fObserverFuncs.IndexOf(TIDEThemeObserverFunc(Result)) <> -1);
end;
Я предполагал, что анонимные методы можно просто приводить и использовать с помощью указателей, но это неверное предположение. Также были бы полезны любые ресурсы, объясняющие, как анонимные методы реализованы под капотом. ТИА.