AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu bitweisen Operatoren/Sets

Ein Thema von Benmik · begonnen am 18. Okt 2021 · letzter Beitrag vom 19. Okt 2021
Antwort Antwort
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#1

Frage zu bitweisen Operatoren/Sets

  Alt 18. Okt 2021, 14:35
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Frage zu bitweisen Operatoren/Sets

  Alt 18. Okt 2021, 15:19
Ich verstehe das Problem nicht, ehrlich gesagt. Bei Mengen:
Menge := Menge + [Element]; Fügt das Element nur hinzu, wenn es noch nicht vorhanden war.

Bei Bitmasken:
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Frage zu bitweisen Operatoren/Sets

  Alt 18. Okt 2021, 15:54
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#4

AW: Frage zu bitweisen Operatoren/Sets

  Alt 18. Okt 2021, 16:12
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: Frage zu bitweisen Operatoren/Sets

  Alt 19. Okt 2021, 07:07
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 16:55 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