AGB  ·  Datenschutz  ·  Impressum  







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

Set Konstanten einen Wert zuweisen

Ein Thema von DrUArn · begonnen am 21. Feb 2018 · letzter Beitrag vom 22. Feb 2018
Antwort Antwort
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 11:31
OK, dann schau mal meinen Edit in Post #2 an. Sowas müsste gehen:
Delphi-Quellcode:
opts := [DockBasicSize_UA];
RichEdit1.Tag := Byte(opts);

und umgedreht:
Delphi-Quellcode:
opts := tDockOpts_UA(RichEdit1.Tag);
if DockBasicSize_UA in opts then
  ...
Edit: Vielleicht Word(opts) , wenn du mehr als 8 Enumeratoren hast.
Uli Gerhardt

Geändert von uligerhardt (21. Feb 2018 um 11:39 Uhr)
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 11:42
Hallo Uli Gerhardt,

danke für die Hinweise.
#3 werde ich nutzen - das macht's bequemer.

#5 Tag:=byte(opts); ist eine ungültige Typumwandlung


Gruß Uwe
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 11:45
Hallo Uli Gerhardt,

danke für die Hinweise.
#3 werde ich nutzen - das macht's bequemer.

#5 Tag:=byte(opts); ist eine ungültige Typumwandlung


Gruß Uwe
Lies den editierten #5.

Zu #3: Es müsste sogar for opt in opts do gehen.
Uli Gerhardt
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 11:49
Hallo Uli Gerhardt,

stimmt - mit word(Opts) wird das ordnungsgemäß umgewandelt (Staun!).

Ich schaue mir das jetzt noch mal in Ruhe an und was es wo bringt und melde mich Morgen nochmal.

Danke für's Mitdenken.

Gruß Uwe

PS. Woher weiß den Word(Opts) mit OPts:=[DockAuto_UA,DockHori_UA], daß diese tdpockopt_ua eine Potenz von zwei ist?

Geändert von DrUArn (21. Feb 2018 um 11:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 12:04
daß diese tdpockopt_ua eine Potenz von zwei ist?
tDockOpt_UA Das ist der ENUM und der hat keine Zweierpotenz.
Da wird einfach nur blind hochgezählt.

Und bei dem SET tDockOpts_UA ist das immer so.
1 Bit = ein Wert aus dem ENUM

Und Bits in einem Byte/Word/LongWord sind zufällig Zweierpotenzen, weil das für solche ordinalen Typen so definiert ist.


1-8 ENUM-Werte = 1 Byte im SET
9-16 ENUM-Werte = 2 Byte im SET
17-32 ENUM-Werte = 4 Byte im SET
33-64 ENUM-Werte = 8 Byte im SET

Bei {$MinEnumSize 2} für 1-8 ENUM-Werte = 2 Byte im SET.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Feb 2018 um 12:07 Uhr)
  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 22:06 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