Я пытаюсь создать список обработчиков событий, в которых обработчик является ссылкой на метод. Чтобы удалить конкретный обработчик, мне нужно найти его в списке. Но как я могу сравнить адрес кода двух ссылок на методы?
type
TEventHandler = reference to procedure;
procedure TestProc;
begin
end;
procedure TForm26.FormCreate(Sender: TObject);
var
Handlers: TList<TEventHandler>;
begin
Handlers := TList<TEventHandler>.create;
try
Handlers.Add(TestProc);
Handlers.Remove(TestProc); { doesn't work }
Assert(Handlers.Count=0); { fails }
Assert(Handlers.IndexOf(TestProc)>=0); { fails }
finally
FreeAndNil(Handlers);
end;
end;
Сравнение по умолчанию TList < > не сравнивает ссылки на методы должным образом. Как я могу их сравнить? Есть ли структура, аналогичная TMethod, но для ссылок на методы?