Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

offenes Array mit Interfaces übergeben

  Alt 19. Jan 2020, 20:14
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)?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (19. Jan 2020 um 21:55 Uhr)
  Mit Zitat antworten Zitat