![]() |
Enumval in Delphi darstellen
Hiho,
ich hab hier nen C## Code.
Code:
hier werden in einer Cardinal Bits gesetzt.
ENUMDEF(KS_ACCESS)
#define KS_AC_NONE ENUMVAL(KS_ACCESS, 0) /* no access at all */ #define KS_AC_READ ENUMVAL(KS_ACCESS, 1) /* read access */ #define KS_AC_WRITE ENUMVAL(KS_ACCESS, 2) /* write access */ #define KS_AC_READWRITE (KS_AC_READ | KS_AC_WRITE) #define KS_AC_DELETEABLE ENUMVAL(KS_ACCESS, 0x10000000) #define KS_AC_RENAMEABLE ENUMVAL(KS_ACCESS, 0x08000000) #define KS_AC_LINKABLE ENUMVAL(KS_ACCESS, 0x04000000) #define KS_AC_UNLINKABLE ENUMVAL(KS_ACCESS, 0x02000000) /* object can act as a factory */ #define KS_AC_INSTANTIABLE ENUMVAL(KS_ACCESS, 0x20000000) /* object is part of another object */ #define KS_AC_PART ENUMVAL(KS_ACCESS, 0x80000000) Kombinationen wie z.B: 0xBE000002 können auftreten. Ich bin nun am Rätseln, wie ich nun aus der Zahl die entsteht, herauslesen kann, ob nun Das KS_AC_PART gesetzt ist, oder eben nicht. Oder das KS_AC_READ ... etc. Sitze aufm Schlauch. |
Re: Enumval in Delphi darstellen
Könnte so aussehen:
Delphi-Quellcode:
Grüße vom marabu
function Test(bits, mask: cardinal): boolean;
begin // Result := bits and mask <> 0; // funktioniert nur mit Ein-Bit-Test Result := bits and mask = mask; // testet auch Bit-Felder end; begin if Test(KS_ACCESS, KS_AC_PART) then ShowMessage('Stimmt') else ShowMessage('Falsch'); end; |
Re: Enumval in Delphi darstellen
Du solltest mit den AND-Befehl zum Ziel kommen.
Hier mal ein wenig Theorie: Du hast ein 8-Bit-Zahl (aka Byte :) ) 123 und du willst testen, ob das 6. Bit (=2^5=32) gesetzt ist. Da ergibt sich folgende Darstellung
Code:
In Delphi würde das Ganze so aussehen:
____1111011B
AND 0010000B ------------ = 0010000B
Delphi-Quellcode:
Auf diese Weise kannst du testen, ob ein Flag gesetzt ist oder nicht
Zahl:=123;
TestZahl:=32; if (Zahl and Testzahl)=Testzahl then //Oleee //btw: Beim Schreiben ist mir aufgefallen, das in der Delphi-Hilfe ein Beispiel dafür drin ist, dort aber die Bedingung anders lautet: if (Zahl and Testzahl)=Zahl .... Irgendwie bin ich nun ein wenig verwirrt. Aber das was ich oben geschrieben habe, ist das was ich in der Ausbildung gelernt habe. |
Re: Enumval in Delphi darstellen
Hmm unter welchen Stichworten hast Du denn in der Hilfe geschaut?
Aber zunächst einmal Danke für die Antworten. /me hat noch große Wissenslücken :stupid: . |
Re: Enumval in Delphi darstellen
enum mit definierten werten gibt es im delphi sprachumfang nicht.
enum's fangen immer bei null in delphi an. z.b.:
Delphi-Quellcode:
type
einEnum = (eE_Wert1, eE_Wert2, eE_Wert3); einSetEnum = set of einEnum; |
Re: Enumval in Delphi darstellen
Zitat:
Delphi-Quellcode:
TBla = (bLoop = 1, bJupp = 2, bHolla = 4);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz