![]() |
Delphi-Version: 5
Was passiert denn da?
Hallo,
ich bin über eine Zeile gestoßen, die ich mir nicht erklären kann. Es geht darum in einem TfrView(Fast-Report) die Funktion WordWrap ein und auszuschalten. Geschaltet wird mit ckbWordWrap.Checked, einer Checkbox. Die Zeile lautet
Code:
Wobei die einzelnen Teile so definiert sind:
Memo.Flags := (Memo.Flags and not flWordWrap) or Word(Boolean(ckbWordWrap.Checked)) * flWordWrap;
Code:
Was mich irritiert ist die Verwendung von logischen Operatoren im Zusammenhang mit ganzen Zahlen. Warum macht man das nicht als Menge wie z.B. bei Font.Styles?
Flags: Word;
// object flags flStretched = 1; flWordWrap = 2; flWordBreak = 4; flAutoSize = 8; flTextOnly = $10; ... Danke für die Aufmerksamkeit. |
AW: Was passiert denn da?
Code:
das ist so ein Konstrukt für das man C so mag.
Memo.Flags := (Memo.Flags and not flWordWrap) or Word(Boolean(ckbWordWrap.Checked)) * flWordWrap;
Code:
also setzt diese Zeile das zweite Bit abhängig davon ob ckbWord.Checked true ist.
(Memo.Flags and not flWordWrap) = Memo.Flags or 111111101 = alle Bits sind gesetzt bis auf das zweite, das ist oder nicht
Word(Boolean(ckbWordWrap.Checked)) * flWordWrap = 0 oder 2 {2=flchecked} und alle anderen Bits sind auch gesetzt. (Mann hoffentlich hab ich mich nicht verlaufen) Gruß K-H |
AW: Was passiert denn da?
Alle anderen Bits sind nicht auch gesetzt, sondern bleiben so wie sie vorher waren.
Code:
xxxxxxxx (Memo.Flags)
and 11111101 (not flWordWrap) ================ xxxxxx0x |
AW: Was passiert denn da?
Mich verwirrt immer noch das " * flWordWrap" also Multiplikation mal 2. Also im Endeffekt Bit-Shiften um eins nach links. Warum schreibt man "multipliziert mit Wordwrap" statt "shl 1"?
|
AW: Was passiert denn da?
Zitat:
Bei true werden die Flags mit flWordWrap verodert, bei false nicht (bzw. sie werden mit 0 verodert, was keine Auswirkung hat) |
AW: Was passiert denn da?
Hab die Klammerung falsch gelesen... Alles klar. Aber es geht hoffentlich auch im Delphi Style und damit besser lesbar.
Sherlock |
AW: Was passiert denn da?
(Hat sich erledigt, weil sich Sherlocks Beitrag erledigt hat) :mrgreen:
|
AW: Was passiert denn da?
Zitat:
Gruß K-H |
AW: Was passiert denn da?
|
AW: Was passiert denn da?
Ich gebe dir Recht dass der Titel keinen Preis verdient, aber Clickbait? :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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 by Thomas Breitkreuz