Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi offenes Array mit Interfaces übergeben (https://www.delphipraxis.net/203163-offenes-array-mit-interfaces-uebergeben.html)

stahli 19. Jan 2020 19:14

offenes Array mit Interfaces übergeben
 
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)?

Stevie 19. Jan 2020 20:25

AW: offenes Array mit Interfaces übergeben
 
array of TGUID

stahli 19. Jan 2020 21:51

AW: offenes Array mit Interfaces übergeben
 
Super, vielen Dank!
So einfach... :oops:

himitsu 20. Jan 2020 10:54

AW: offenes Array mit Interfaces übergeben
 
Du willst ja auch die Typen (z.B. GUID) und keine Instanzen (IInterface) zum Prüfen übergeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz