Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bitmaske in Set speichern (https://www.delphipraxis.net/106712-bitmaske-set-speichern.html)

Andreas H. 15. Jan 2008 12:51


Bitmaske in Set speichern
 
Hallo,

wie kann ich eine Bitmaske (integer) in einem Set speichern?

Delphi-Quellcode:
    TToolStatus = set of
    (
      tsAktiv = 1,     // Kennung A
      tsFreigeg = 2,   // Kennung F
      tsGesperrt = 4,  // Kennung G
      tsVermessen = 8, // Kennung M
      tsVorwarn = 16,  // Kennung V
      tsWZW = 32,      // Kennung W
      tsFestplatz = 64, // Kennung P
      tsBenutzt = 128   // Kennung E
    );
Geht das auch, ohne jedes mögliche Element mittels AND abzufragen?

Gruß Andreas

Bernhard Geyer 15. Jan 2008 12:54

Re: Bitmaske in Set speichern
 
Delphi-Quellcode:
TToolStatus = (tsAktiv, ...); //Ohne Angabe ID
TToolStatusSet = set of TToolStatus;

Andreas H. 15. Jan 2008 13:00

Re: Bitmaske in Set speichern
 
Und dann

Delphi-Quellcode:
var Menge:TToolStatusSet;

begin
  Menge:=7;
end;
Das geht?

Und wie ist die Wertigkeit der Mengenelemente? 1. Element hat kleinse Wertigkeit?

Andreas

s-off 15. Jan 2008 13:07

Re: Bitmaske in Set speichern
 
Ein Set fängt bei 0 an - das sieht man auch, wenn man die Maus darüber bewegt, oder sich die Code-Hilfe öffnet.

Andreas H. 15. Jan 2008 13:08

Re: Bitmaske in Set speichern
 
Werde es probieren!

Super, Danke

Andreas

Bernhard Geyer 15. Jan 2008 13:11

Re: Bitmaske in Set speichern
 
Delphi-Quellcode:
var Menge:ToolStatusSet;
begin
  Menge := TToolStatusSet(7);
end;
Wobei fraglich ist ob das Beispiel sinnvoll ist.
Kann etwas gleichzeitig Aktiv, Freigegeben und Gesperrt sein?

s-off 15. Jan 2008 13:12

Re: Bitmaske in Set speichern
 
Ähm nochwas,

das, was Du vorhast, geht so nicht!

Erstens würde es
Delphi-Quellcode:
var
 Menge: [b]T[/b]ToolStatusSet;
lauten, und zweitens kannst Du eine Zuweisung so nicht per Wertigkeit vornehmen, sondern nur über den Bezeichner, also z.B.
Delphi-Quellcode:
Menge := [tsBenutzt];
Es sei denn, Du machst es so, wie es Bernhard Geyer zeigt.
Wenn Menge ein Set ist, dann darfst Du die Klammern nicht vergessen!

marabu 15. Jan 2008 13:35

Re: Bitmaske in Set speichern
 
Hallo Andreas,

geht es wirklich um allgemeine Set-Operationen?

Ich habe deine Frage eigentlich anders verstanden: Set of in Ordinal umwandeln

Freundliche Grüße

Andreas H. 15. Jan 2008 13:51

Re: Bitmaske in Set speichern
 
Danke marabu,

so geht es.

Wenn ich es so mache wie Bernhard es vorgeschlagen hat, kommt: ungültige Typumwandlung.

BY THE WAY wie finde ich sowas im Handbuch/Hilfe? Das sehe ich das erste Mal :oops:
Delphi-Quellcode:
Byte(w):=7;
Gruß Andreas

Bernhard Geyer 15. Jan 2008 13:54

Re: Bitmaske in Set speichern
 
Zitat:

Zitat von Andreas H.
Wenn ich es so mache wie Bernhard es vorgeschlagen hat, kommt: ungültige Typumwandlung.

Hätte ich noch: "Blindschuss" ergänzen sollen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.
Seite 1 von 2  1 2      

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