以下のコードが失敗する理由を誰か説明できますか?
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;
匿名メソッドは単純にキャストしてポインターを介して使用できると想定していましたが、それは間違った想定のようです。また、匿名メソッドが内部でどのように実装されているかを説明しているリソースは素晴らしいでしょう。ティア。