Ich habe mir etwas das Hirn verknotet und suche eine Lösung für folgendes Problem:
Ich möchte prüfen, ob eine Interfacevariable zu bestimmte Interfaces unterstützen, die ich als offenes Array übergebe:
Delphi-Quellcode:
function SupportsIn(TestIntf: IInterface; TestArray: TArray[IInterface]): Boolean;
var
I: Integer;
begin
Result := False;
for I := low(TestArray) to high(TestArray) do
begin
if Supports(TestIntf, TestArray[I]) then
begin
Exit(True);
end;
end;
end;
procedure Test(TestIntf: IInterface; TestArray: TArray[IInterface]);
begin
if SupportsIn(TestIntf, TestArray) then
Beep;
end;
Test(MyIntf, [IPerson, ICar]);
Test(MyIntf, [IEagle, IDog, IFish]);
Test(MyIntf, [IPerson]);
Im Grunde möchte ich so etwas wie "in Set".
Ist sowas realisierbar (mit oder ohne Generics)?