![]() |
AW: Bitoperationen
Ja und? Er will doch einfach nur Farben verwalten, da kann man die doch auch direkt nehmen. Oder alternativ eine Enumeration, das dürfte zumindest einfacher sein als umständlich mit Bits herumzurechnen.
|
AW: Bitoperationen
Hallo,
die Frage mit TColor ist berechtigt, aber ich brauche wirklich nicht soviele bits UND es komen später noch viele andere schöne eigenschaften hinzu. Das kannst du aber logischerweise nicht wissen. Das Ist jetzt nur zum lernen soweit.... Danke, ich muss das ersteinmal alles ausprobieren ^^ EDIT: Zitat:
|
AW: Bitoperationen
Blättere hier ein paar Seiten zurück und sieh dir meine Beiträge an. Ich habe diesen Typ selber definiert und ausprogrammiert!
Dies musst du natürlich übernehmen |
AW: Bitoperationen
Ich möchte aber nochmals darauf hinweisen, dass der Gebrauch von Bitmasken für Werte, die sich gegenseitig ausschließen (schwarz kann nicht blau und nicht rot sein), nicht oder nur bedingt geeignet ist. Erst wenn es um Wertekombinationen geht ist das dann wieder sinnvoll.
|
AW: Bitoperationen
Hallo,
Zitat:
Zitat:
Delphi-Quellcode:
Ich habe jetzt alles etwas verändert und ... der Text ist dauerhaft rot...
var
i: TBitRange; B: TBitByte; begin for i := 0 to 3 do B[i] := True; Writeln( B.Value, ' - ', B.AsString ); Readln; end.
Delphi-Quellcode:
Wo wir gerade dabei sind:
const
flschwarz = 1; //fl = Flag flblau = 2; flrot = 4; // schreibfehler, vorher stand hier 3 flgruen = 8; flgrau = 16; ... //schwarz klick buchstabe[PositionSpalte,PositionZeile].attribut:=buchstabe[PositionSpalte,PositionZeile].attribut OR 1; //blaun klick buchstabe[PositionSpalte,PositionZeile].attribut:=buchstabe[PositionSpalte,PositionZeile].attribut OR 2; //rot klick buchstabe[PositionSpalte,PositionZeile].attribut:=buchstabe[PositionSpalte,PositionZeile].attribut OR 4; ... //Vergleich if (buchstabe[i,n].Attribut and flschwarz > 0) then Schreibflaeche.Canvas.Font.Color:=clblack; if (buchstabe[i,n].Attribut and flblau > 0) then Schreibflaeche.Canvas.Font.Color:=clblue; if (buchstabe[i,n].Attribut and flrot > 0) then Schreibflaeche.Canvas.Font.Color:=clred; Zitat:
FG Dunkelbunt |
AW: Bitoperationen
Machen wir doch einmal den Vergleich wie im Tutorial (Bit 3 soll anschließend nicht mehr gesetzt sein):
Code:
Du musst also nicht abfragen, ob es vorher gesetzt war, nach der And-Verknüpfung ist es das definitiv nicht mehr.
00000100 //4 ist gesetzt
11111011 //not 4 ------- and-Verknüpfung 00000000 00000000 //4 ist nicht gesetzt 11111011 //not 4 -------- and-Verknüpfung 00000000 |
AW: Bitoperationen
Gut. Und kannst du mir auch erklären, wieso es noch nicht funktioniert? :?
EDIT: Rot ist es nicht mehr, war nen Tippfehler, aber die Farben ändern sich nochimmer nicht... |
AW: Bitoperationen
Vermutlich sind zuviele Bits gesetzt.
[edit] Durch das Verodern setzt Du ja immer ein Bit mehr. Klickst Du jetzt auf schwarz, dann auf blau, dann auf rot, steht 7 in Deiner Zahl, also schwarz, blau und rot. Was soll es denn nun sein? Deshalb ja mein Einwand etwas weiter vorn. [/edit] |
AW: Bitoperationen
Ich gebe jetz mal zur laufzeit den Wert des Bits in einem Label aus um besser zu verstehen, was passiert.
|
AW: Bitoperationen
Du versuchst gerade ein Set nachzubilden und benötigst eigentlich nur ein Enum.
Somit wirkt das alles etwas sinnentleert (wie DeddyH schon angemerkt hat) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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