AGB  ·  Datenschutz  ·  Impressum  







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

SetOf typecasten in LongInt

Ein Thema von Codehunter · begonnen am 1. Okt 2012 · letzter Beitrag vom 1. Okt 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: SetOf typecasten in LongInt

  Alt 1. Okt 2012, 11:06
Dein TSynEditMarkChangeReasons ist ein Byte und kein LongWord/LongInt also ist es vollkommen korrekt, daß es sich nicht casten läßt.

Set:
1-8 Werte = Byte
9-16 Werte = Word
17-32 Werte = LongWord (eigentlich gibt es keine Vorzeichen im SET, aber notfalls ginge auch LongInt)

Enum:
1-256 Werte = Byte
257-65536 Werte = Word
65537-4294967296 Werte = LongWord

Beim ENUM kann man aber über {$MINENUMSIZE} die minimale Byte-Größe festlegen, was es beim SET leider nicht gibt.


[edit]
Nein, das Casten geht schon.
Besser das Casten benutzen, als wilde Speicheroperationen, aber wenigstens nutzt du noch SetOf und nicht irgendwelche "Konstanten".
Aber, wenn man nicht weiß wie groß der Cast sein muß, dann kann man das Caption := IntToStr(SizeOf(r)); benutzen, um nachzusehn.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Okt 2012 um 11:10 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SetOf typecasten in LongInt

  Alt 1. Okt 2012, 11:08
Eine Byte kann man problemlos in einen LognInt casten ( 8 Bit unsinged geht problemlos in eine 32Bit signed). aber Ein Set von Bytewerten lässt sich imho nicht sinnvoll in einen Wert wandeln.
Markus Kinzler
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: SetOf typecasten in LongInt

  Alt 1. Okt 2012, 12:51
Set:
1-8 Werte = Byte
9-16 Werte = Word
17-32 Werte = LongWord (eigentlich gibt es keine Vorzeichen im SET, aber notfalls ginge auch LongInt)
Aber war ein Set nicht doch ein bisschen mehr als nur eine einfache Bitmaske? Oder gehen da echt nur 32 mögliche Zustände rein und es ist mir bloß nie aufgefallen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: SetOf typecasten in LongInt

  Alt 1. Okt 2012, 13:02
Es sind wirklich nur Bitmasken.
Ich glaub das ging bis 256 Werte, also weiter mit UInt64 und Größeres dann als Record mit vielen LongWords, bzw. als statisches Array of LongWord (maximal 8 LongWord).

Es ginge zwar theoretisch mehr, aber die verwendeten Assembler-Befehle (BT, BTS, BTR, und BTC) verwenden vom Indexregister nur das unterste Byte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#5

AW: SetOf typecasten in LongInt

  Alt 1. Okt 2012, 13:56
Aber war ein Set nicht doch ein bisschen mehr als nur eine einfache Bitmaske? Oder gehen da echt nur 32 mögliche Zustände rein und es ist mir bloß nie aufgefallen?
Siehe auch hier: TIntegerSet
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 19:49 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