AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Enumval in Delphi darstellen

Ein Thema von HariboHunter · begonnen am 19. Dez 2005 · letzter Beitrag vom 19. Dez 2005
Antwort Antwort
Benutzerbild von HariboHunter
HariboHunter

Registriert seit: 5. Okt 2004
Ort: Kentucky
78 Beiträge
 
#1

Enumval in Delphi darstellen

  Alt 19. Dez 2005, 10:10
Hiho,

ich hab hier nen C## Code.

Code:
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)
hier werden in einer Cardinal Bits gesetzt.
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Enumval in Delphi darstellen

  Alt 19. Dez 2005, 10:20
Könnte so aussehen:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Enumval in Delphi darstellen

  Alt 19. Dez 2005, 10:25
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:
____1111011B
AND 0010000B
------------
=  0010000B
In Delphi würde das Ganze so aussehen:
Delphi-Quellcode:
Zahl:=123;
TestZahl:=32;
if (Zahl and Testzahl)=Testzahl then
  //Oleee
Auf diese Weise kannst du testen, ob ein Flag gesetzt ist oder nicht

//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.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von HariboHunter
HariboHunter

Registriert seit: 5. Okt 2004
Ort: Kentucky
78 Beiträge
 
#4

Re: Enumval in Delphi darstellen

  Alt 19. Dez 2005, 10:48
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 .
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Enumval in Delphi darstellen

  Alt 19. Dez 2005, 15:41
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;
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Enumval in Delphi darstellen

  Alt 19. Dez 2005, 15:45
Zitat von generic:
enum mit definierten werten gibt es im delphi sprachumfang nicht.

enum's fangen immer bei null in delphi an.
Nope, folgendes ist ebenso möglich:
  TBla = (bLoop = 1, bJupp = 2, bHolla = 4);
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 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