Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Set of - Überprüfen welche Werte enthalten sind (https://www.delphipraxis.net/89910-set-ueberpruefen-welche-werte-enthalten-sind.html)

xZise 8. Apr 2007 13:39


Set of - Überprüfen welche Werte enthalten sind
 
Ich habe ein Set of definiert:
Delphi-Quellcode:
TFlags = (fWaiting, fWaitForStart, fWorking, fWaitForEnd)
{...}
flags : set of TFlags;
Wie kann ich nun überprüfen, welche Werte es enthält?
z.B. wenn das gegeben ist:
Delphi-Quellcode:
flags = [fWaiting, fWaitForEnd];
Geht das nur so?
Delphi-Quellcode:
if flags = [fWaiting] then
{...}
Aber was ist, wenn ich überprüfen will, of fWaiting vorhanden ist, aber der Rest mich (erstmal) nicht interessiert?
Delphi-Quellcode:
if flags = [fWaiting, else] then
{...}

fwsp 8. Apr 2007 13:58

Re: Set of - Überprüfen welche Werte enthalten sind
 
kannst du nicht
Delphi-Quellcode:
if [fWaiting] in flags then
schreiben?

xZise 8. Apr 2007 14:04

Re: Set of - Überprüfen welche Werte enthalten sind
 
omfg :(

(sry)

Ja klar kann ich das...
Is nur so, dass ich das erste mal selber mit sets arbeite (naja.. bisher nur bei Komponenten wegen Anchors o.ä., aber eben nur setzten ;))

Dezipaitor 8. Apr 2007 18:51

Re: Set of - Überprüfen welche Werte enthalten sind
 
Delphi-Quellcode:
if x in Flags then
ohne [] !!

ste_ett 8. Apr 2007 19:05

Re: Set of - Überprüfen welche Werte enthalten sind
 
Um eine Schnittmenge zweier Mengen (Sets) zu ermitteln kann man Folgendes machen. :)

Delphi-Quellcode:

type
  TMyType = (MyA, MyB, MyC);
  TMySet = set of TMyType;

//...

var
  MyType: TMyType;
  MySet1: TMySet;
  MySet2: TMySet;
  MySet3: TMySet;
begin
  MyType := MyA;
  MySet1 := [MyA, MyB, MyC];
  MySet2 := [MyA, MyC];
  MySet3 := MySet1 * MySet2; // MySet3 enthält die Schnittmenge aus MySet1 und MySet2
  Exclude(MySet3, MyType); // MyType (MyA) entfernen
  Include(MySet3, MyB); // MyB hinzufügen


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 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