Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Flag (Enumeration) übergeben (https://www.delphipraxis.net/162872-flag-enumeration-uebergeben.html)

Bjoerk 8. Sep 2011 08:45


Flag (Enumeration) übergeben
 
Als welchen Typ übergibt man denn bei einem FlagSet ein einzelnes Flag?

Delphi-Quellcode:
Procedure DelPrnFlag (var Flags: TPrnFlags; Flag: ???);
begin
  if Flag in Flags then Flags:= Flags-[Flag];
end;

Medium 8. Sep 2011 08:48

AW: Flag (Enumeration) übergeben
 
TPrnFlags wird wohl ein "set of XXX" sein - ich mutmaße mal "set of TPrnFlag", womit letzteres dein Kandidat wäre ;)

Bjoerk 8. Sep 2011 08:59

AW: Flag (Enumeration) übergeben
 
Delphi-Quellcode:
type
  TPrnFlags = set of (rot, gruen, blau, ...);

var
  Flags: TPrnFlags
Die Procedure soll Flags-Flag rechnen, als z.B. Flags-rot. Welchen Typ hat den rot ?

himitsu 8. Sep 2011 09:03

AW: Flag (Enumeration) übergeben
 
Dann kannst du es vergessen dir sowas selber zu deklarieren, denn dafür benötigst du eine einzelne Typdeklaration, für den Enum.
Delphi-Quellcode:
type TMySet = set of TMyEnum;
.



Du kannst es auch direkt entfernen und mußt nicht erst prüfen.

Das
Delphi-Quellcode:
-
bei Sets entfernt die Flags bitweise und nicht arithmetisch.
Delphi-Quellcode:
x := y - z;
entspricht eigentlich einem
Delphi-Quellcode:
x := y and not z;
.

Wenn du aber eh nur einzelne Flags entfernen/hinzufügen wollst, dann nutze doch einfach die fertigen Funktionen. :wink:
> Delphi-Referenz durchsuchenExclude und Delphi-Referenz durchsuchenInclude

DelPrnFlag = Exclude



Delphi-Quellcode:
if Flag in Flags then Flags:= Flags-[Flag];

Flags:= Flags-[Flag]; // prüfen nicht nötig

Exclude(Flags, Flag);

Bjoerk 8. Sep 2011 09:29

AW: Flag (Enumeration) übergeben
 
Okay, thanx. Exclude und Include kannte ich nicht.


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