Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Frage zu bitweisen Operatoren/Sets (https://www.delphipraxis.net/209046-frage-zu-bitweisen-operatoren-sets.html)

Benmik 18. Okt 2021 13:35

Frage zu bitweisen Operatoren/Sets
 
Ich habe eine Routine, in der eine Reihe von "Schaltern" einzeln oder in Kombination gesetzt, entfernt oder ausgelesen wird.
Mein Problem dabei: Das Ganze läuft in einer Schleife, in der alle drei Operationen an verschiedenen Stellen erfolgen können, und ein Schalter soll nur dann gesetzt werden können, wenn er nicht schon vorhanden ist, damit er gegebenenfalls einfach wieder entfernt werden kann. Eigentlich natürlich kein Problem, aber ich möchte gern vermeiden, dass jedesmal, wenn ein Schalter hinzugefügt wird, ein Abfragekonstrukt vorhanden sein muss, also im Grunde ein Eleganz-Problem. Wie macht man sowas am elegantesten?

DeddyH 18. Okt 2021 14:19

AW: Frage zu bitweisen Operatoren/Sets
 
Ich verstehe das Problem nicht, ehrlich gesagt. Bei Mengen:
Delphi-Quellcode:
Menge := Menge + [Element];
Fügt das Element nur hinzu, wenn es noch nicht vorhanden war.

Bei Bitmasken:
Delphi-Quellcode:
Mask := Mask or Flag;
Fügt das Bit nur hinzu, wenn es noch nicht gesetzt war. Wozu also vorher abfragen?

[edit] Nicht ganz richtig ausgedrückt: egal, ob das Element vorhanden bzw. Flag gesetzt war, das jeweilige Ergebnis bleibt dasselbe, so wäre es richtiger. [/edit]

himitsu 18. Okt 2021 14:54

AW: Frage zu bitweisen Operatoren/Sets
 
Delphi-Quellcode:
Mask := Mask + Flag;

Wer so einen Mist baut, der muß natürlich vorher prüfen,
aber mit OR macht man es eh richtig.

Bei SETs macht das + im Prinzip ein OR.
+ = or
- = and not
* = and

Benmik 18. Okt 2021 15:12

AW: Frage zu bitweisen Operatoren/Sets
 
Zitat:

Zitat von DeddyH (Beitrag 1496229)
Bei Mengen:
Fügt das Element nur hinzu, wenn es noch nicht vorhanden war.
Bei Bitmasken:
Fügt das Bit nur hinzu, wenn es noch nicht gesetzt war.
Wozu also vorher abfragen?

Wenn das so ist, dann verstehe ich, dass du das Problem nicht verstehst. Ich hatte von Mengen irgendwie im Kopf, dass ein und dasselbe Element beliebig oft hinzugefügt werden kann. Dann ist das Problem tatsächlich keins, vielen Dank, auch an Himitsu, für das OR.

DeddyH 19. Okt 2021 06:07

AW: Frage zu bitweisen Operatoren/Sets
 
Zitat:

Zitat von Benmik (Beitrag 1496235)
Ich hatte von Mengen irgendwie im Kopf, dass ein und dasselbe Element beliebig oft hinzugefügt werden kann.

Das stimmt auch (es gibt keinen Fehler beim Versuch), allerdings ist das Element anschließend trotzdem nur einmal vorhanden.


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