type
 TProc = procedure of object;
 TProcArray = array of TProc;

function IndexOf(const a: TProcArray; proc: TProc): Integer;
var
 n: Integer;
begin
 for n := 0 to High(a) do
  if @a[n] = @proc then // <-- 手続きアドレスの比較ができない。
  begin
   Result := n;
   Exit;
  end;
 Result := -1;
end;